#对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))