我在寻找一种方法来对Python字典按其值进行排序,经过几次尝试,以下是得出的结果:
a = {<populated dict...>}
a = {v: k for k, v in a.items()}
a = {v: k for k, v in sorted(a.items())}
这段代码似乎可以工作,但我认为它的性能比较差,有更好的方法吗?
我在寻找一种方法来对Python字典按其值进行排序,经过几次尝试,以下是得出的结果:
a = {<populated dict...>}
a = {v: k for k, v in a.items()}
a = {v: k for k, v in sorted(a.items())}
这段代码似乎可以工作,但我认为它的性能比较差,有更好的方法吗?
您无需执行双键/值交换,可以执行以下操作:
a = {k: v for k, v in sorted(a.items(), key=lambda x: x[1])}
(排序文档)
data = dict(a=1, b=3, c=2)
print(data)
data_sorted = {k: v for k, v in sorted(data.items(), key=lambda x: x[1])}
print(data_sorted)
来自于CPython 3.6:
{'a': 1, 'b': 3, 'c': 2}
{'a': 1, 'c': 2, 'b': 3}
默认情况下,字典是按键排序的,但 sorted() 函数可以接受一个函数作为参数,通过该函数可以改变程序的行为。
d={'a':6,'b':4,'k':3}
print(sorted(d))
sorted_by_values= sorted(d,key=lambda x:d[x])
print(sorted_by_values)
sorted_list_by_value=sorted(data_dict, key=data_dict.__getitem__)
from collections import OrderedDict
OrderedDict(sorted(d,key=lambda x:d[x]))
这样的操作。被接受的答案并不是一个"已排序的字典",而是一个已排序的元组可迭代对象。 - undefined