如何按字母顺序降序排序字典

时间:2015-07-29 22:17:57

标签: python

如果我有一本字典:

{'name1':[3],'name2':[1],'name3':[2]}

如何订购,以便按照数值的顺序打印出这些名称 - 例如最高数字到最低数字,以便它看起来像?:

{'name1':[3],'name3':[2],'name2':[1]}

(python 3.3.3)

1 个答案:

答案 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]]
>>>