我从redis键值存储中提取一些数据。 数据采用列表格式。然而,我拉它们并将它们放入字典中
{ name1: [ int1, int2] }
{ name2: [ int11,int22]}
..etc...
我想创建一个排序字典,其中提取的条目按列表中的int2
值排序。我该怎么做这个sort和itemgetter?
因此,我喜欢排序字典,以便names
按照列表值int2
的值按降序排序
我试过sorted(data, key=itemgetter(2))
,但这显然不起作用:(
答案 0 :(得分:1)
要获取所有名称的排序列表,您必须获取密钥的值:
sorted_names = sorted(data, key=lambda k: data[k][1])
答案 1 :(得分:1)
你可以尝试 -
sorted(d.items() , key=lambda x: d[x[0]][1])
这将返回按字典值列表中的第二个元素排序的元组。
请注意,字典在其元素中没有order
的概念,即您本身不能sort
字典。
答案 2 :(得分:0)
最好将字典视为一组无序的键:值 对,要求密钥是唯一的(在一个内 字典)。
所以,你不能得到一个有序的字典,如果你想保持相同的数据类型,即:字典和订购项目,使用OrderedDict:
有序词典就像常规词典一样,但它们 记住插入项目的顺序。迭代时 有序字典,项目按顺序返回其键 首先加入。
因此,如果您想获得按int2排序的有序字典(来自Python文档的示例)
from collections import OrderedDict
d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
d = OrderedDict(sorted(d.items(), key=lambda t: t[1])) #Order by Value
print d
输出:
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])