在Python 3.6+中按值对字典排序

kmpatx3s  于 2023-11-20  发布在  Python
关注(0)|答案(4)|浏览(92)

我一直在寻找一种方法来用Python中的值对字典进行排序,经过几次尝试后,它来了:

a = {<populated dict...>}
a = {v: k for k, v in a.items()}
a = {v: k for k, v in sorted(a.items())}

字符串
这段代码似乎可以工作,但我认为它的性能很差,有更好的方法吗?

cotxawn7

cotxawn71#

你不需要做double key/value swap,你可以这样做:

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}

jogvjijk

jogvjijk2#

默认情况下,字典是基于键排序的,但是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)

字符串

nwlqm0z1

nwlqm0z13#

下面的代码对我来说是有效的。不知道这有多有效。

sorted_list_by_value=sorted(data_dict, key=data_dict.__getitem__)

字符串

rm5edbpk

rm5edbpk4#

否则按您想要的顺序创建一个键列表。

from collections import OrderedDict
d = {1: 1, 2:4, 5:2, 9:3}
sorted_dict = OrderedDict(sorted(d.items(),key=lambda x: x[1]))

字符串
编辑为将sort包含到sorted dict中

相关问题