Skip to content

Latest commit

 

History

History
50 lines (28 loc) · 1.85 KB

File metadata and controls

50 lines (28 loc) · 1.85 KB

#对Python字典按值排序

原问题地址:http://stackoverflow.com/questions/613183/sort-a-python-dictionary-by-value

##问题:

我有一个值的字典,它的值来自于数据库中的两个字段:字符串字段和数字字段。字符串字段是独一无二的,字典的键也是如此。

我可以按键排序,但我怎么才能按值排序?

注:我读了Stack Overflow的问题:我如何在Python中对字典列表按值排序?,我也许能够改变我的代码来获取字典列表,但我真的不需要字典列表,我想知道是否有一个更简单的解决方案。

##答案 1:

对一个字典排序,却只得到这个经过排序的字典,这是不可能的。字典本质上是无序的,但其他类型,如列表和元组,却是有序的。所以你需要一个排序表示法,也就是一个列表,很可能是元组的列表。

例如,

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))

sorted_x将会是元组的列表,这个列表根据每个元组中的第二个元素来排序。dict(sorted_x) == x。

如果你希望根据键而不是根据值进行排序:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))

##答案 2:

你可以使用:

sorted(d.items(), key=lambda x: x[1])

这是按照字典中每个条目的值从小到大的顺序进行排序。

##答案 3:

字典不可以排序,但是你可以为它们建立一个有序的列表。

按照字典的值排序后的列表:

sorted(d.values())

按值排序的(键、值)对的列表:

from operator import itemgetter
sorted(d.items(), key=itemgetter(1))