繁体   English   中英

如何按数字降序对字典排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM