[英]How to sort a dictionary by descending order numerically
如果我有像这样的字典:
{'name1':[3],'name2':[1],'name3':[2]}
我该如何排序,以便按数字顺序打印出这些名称-例如,从最高编号到最低编号,这样看起来像吗?
{'name1':[3],'name3':[2],'name2':[1]}
(Python 3.3.3)
字典无法排序。 为此,您必须使用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]]
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.