如何根据值排序字典

时间:2010-11-25 07:20:57

标签: python django dictionary

我有一个像

这样的词典
tel = {'jack': 18, 'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29}

我想根据值降序排序,如

tel = {'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29 'jack': 18}

我搜索了很多,发现了无关的结果。那里有内置功能还是其他任何方式。请帮忙。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:3)

无法订购dict。要么使用有序字典,要么使用其他有序序列。

sorted(tel.iteritems(), key=operator.itemgetter(1), reverse=True)

答案 1 :(得分:3)

在python 2.7或3.1中,您可以使用OrderedDict:

from collections import OrderedDict
from operator import itemgetter
tel = {'jack': 18, 'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29}
newtel = OrderedDict(sorted(tel.items(), key=itemgetter(1), reverse=True))

更多示例可以在What's New doc。

中找到 编辑:现在使用itemgetter而不是lambda来取悦那些关心的人。向那些发现旧方式更清楚的人道歉。

答案 2 :(得分:1)

import operator
sorted(my_dict.iteritems(), key=operator.itemgetter(1))

可以是usefull