如果我有一本字典:
{'name1':[3],'name2':[1],'name3':[2]}
如何订购,以便按照数值的顺序打印出这些名称 - 例如最高数字到最低数字,以便它看起来像?:
{'name1':[3],'name3':[2],'name2':[1]}
(python 3.3.3)
答案 0 :(得分:2)
字典不能有订单。为此你必须使用collections.OrderedDic
这是唯一的方法!
from collections import OrderedDict
dct = OrderedDict({'name1':[3],'name2':[1],'name3':[2]})
dct = OrderedDict(sorted(dct.items(), key=lambda t: t[1][0], reverse = True))
print(dct)
结果
OrderedDict([('name1', [3]), ('name3', [2]), ('name2', [1])])
嗯,正如所建议的那样,没有OrderedDict(但使用列表理解)的解决方案,如果它只用于打印列表:
dct = {'name1':[3],'name2':[1],'name3':[2]}
lst = sorted([[k, v] for k, v in dct.items()], key=lambda ls : ls[1][0], reverse = True)
print(lst)
结果:
>>>
['name1', [3]]
['name3', [2]]
['name2', [1]]
>>>