2024-06-15 03:54:40 发布
网友
我正在整理一本词典。这是那本字典:
mydict = { 'b': {'play': 2, 'scratch': 5, 'face': 8}, 'c': {'do': 4, 'chew': 6}, 'a': {'wash': 1, 'drink': 10, 'give': 20, 'eat': 30} }
我希望排序后得到以下结果:
如果你能告诉我如何解决这个问题,我将不胜感激。在
让我们从你的字典开始:
>>> mydict = { ... 'b': {'play': 2, 'scratch': 5, 'face': 8}, ... 'c': {'do': 4, 'chew': 6}, ... 'a': {'wash': 1, 'drink': 10, 'give': 20, 'eat': 30} ... }
普通字典是无序的。但是,可以从“集合”模块获取已排序词典:
我们可以按如下方式将您的词典转换为有序词典:
正如您在上面看到的,d是按我们的要求进行排序的。或者,我们可以只查看密钥并验证它们是否按我们想要的顺序排列:
d
>>> d.keys() odict_keys(['a', 'b', 'c'])
在其他方面,我们的有序字典d的行为与常规字典类似:
>>> d['a'] {'give': 20, 'drink': 10, 'eat': 30, 'wash': 1}
如果我们想让mydict中的字典按值的降序排序,我们再次使用OrderedDict:
>>> mydict['a'] {'give': 20, 'drink': 10, 'eat': 30, 'wash': 1} >>> OrderedDict(sorted(mydict['a'].items(), key=lambda v: -v[-1])) OrderedDict([('eat', 30), ('give', 20), ('drink', 10), ('wash', 1)])
如果要将此顺序应用于mydict的所有条目:
>>> d = OrderedDict( sorted( (key1, OrderedDict(sorted(value.items(), key=lambda v: -v[-1]))) for (key1, value) in mydict.items()) ) >>> d OrderedDict([('a', OrderedDict([('eat', 30), ('give', 20), ('drink', 10), ('wash', 1)])), ('b', OrderedDict([('face', 8), ('scratch', 5), ('play', 2)])), ('c', OrderedDict([('chew', 6), ('do', 4)]))])
创建mydict的有序版本
让我们从你的字典开始:
普通字典是无序的。但是,可以从“集合”模块获取已排序词典:
^{pr2}$我们可以按如下方式将您的词典转换为有序词典:
^{3}$正如您在上面看到的,
d
是按我们的要求进行排序的。或者,我们可以只查看密钥并验证它们是否按我们想要的顺序排列:在其他方面,我们的有序字典
d
的行为与常规字典类似:按键排序mydict,同时按值降序排列mydict中的字典
如果我们想让mydict中的字典按值的降序排序,我们再次使用OrderedDict:
如果要将此顺序应用于mydict的所有条目:
相关问题 更多 >
编程相关推荐