我一直在寻找一种方法来用Python中的值对字典进行排序,经过几次尝试后,它来了:
a = {<populated dict...>} a = {v: k for k, v in a.items()} a = {v: k for k, v in sorted(a.items())}
字符串这段代码似乎可以工作,但我认为它的性能很差,有更好的方法吗?
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}
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)
字符串
nwlqm0z13#
下面的代码对我来说是有效的。不知道这有多有效。
sorted_list_by_value=sorted(data_dict, key=data_dict.__getitem__)
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中
4条答案
按热度按时间cotxawn71#
你不需要做double key/value swap,你可以这样做:
字符串
(分类文档)
测试码:
型
结果:
CPython 3.6:
型
jogvjijk2#
默认情况下,字典是基于键排序的,但是sorted函数将一个函数作为参数,您可以使用它来改变程序的行为。
字符串
nwlqm0z13#
下面的代码对我来说是有效的。不知道这有多有效。
字符串
rm5edbpk4#
否则按您想要的顺序创建一个键列表。
字符串
编辑为将sort包含到sorted dict中