Python 使用列表值对字典进行排序
我正在从redis键值存储中提取一些数据。 数据采用列表格式。然而,我把它们放到字典里Python 使用列表值对字典进行排序,python,sorting,dictionary,Python,Sorting,Dictionary,我正在从redis键值存储中提取一些数据。 数据采用列表格式。然而,我把它们放到字典里 { name1: [ int1, int2] } { name2: [ int11,int22]} ..etc... 我想创建一个已排序的字典,其中所提取的条目按列表中的int2值排序。我如何才能做到这一点排序和itemgetter 因此,我想要一个排序字典,以便根据列表值的int2值按降序对名称进行排序 我尝试了排序(data,key=itemgetter(2)),但这显然不起作用:(要获得所有名称的排序
{ name1: [ int1, int2] }
{ name2: [ int11,int22]}
..etc...
我想创建一个已排序的字典,其中所提取的条目按列表中的int2
值排序。我如何才能做到这一点排序和itemgetter
因此,我想要一个排序字典,以便根据列表值的int2
值按降序对名称
进行排序
我尝试了排序(data,key=itemgetter(2)),但这显然不起作用:(要获得所有名称的排序列表,必须获得键的值:
sorted_names = sorted(data, key=lambda k: data[k][1])
你可以试试-
sorted(d.items() , key=lambda x: d[x[0]][1])
这将返回按字典值列表中第二个元素排序的元组
请注意,字典的元素中没有顺序的概念,即不能对字典本身进行排序
最好将字典视为一组无序的键:值
配对,要求密钥是唯一的(在一个
字典)
因此,您无法获得有序字典,如果您希望保持相同的数据类型,即:dictionary和order the items,请使用:
有序词典和普通词典一样,但它们
记住项目插入的顺序
在ordered dictionary中,项目按其键的顺序返回
首先添加的是
因此,如果您想获得一个按int2排序的有序字典(来自Python文档的示例)
输出:
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
“排序字典”是什么意思?我是指按排序定义的顺序放置名称键的字典。所以{'name1':[1,4],'name2':[1,3],'name3':[1,2],等等。}字典是任意排序的数据结构;如果顺序很重要,那么它们是错误的选择。也许可以查看
集合.OrderedDict
,或者只是一个元组列表[(名称1,[int1,int2]),…]
。如果您的姓名已经按照您想要的顺序排序,您可以使用。我将查看OrderedDict,谢谢。顺序之所以重要的唯一原因是,数据将被比较,然后在html表中使用,并按列表中的最后一个整数排序。您可能需要检查lambda表达式,以便redis返回当我使用r.lrange(key,0,-1)ret=v:['[1752041,49210]'时,这里有一种奇怪的列表类型,这就是我得到的,所以我实际上无法正确解析它…redis服务器实例
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])