Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用列表值对字典进行排序_Python_Sorting_Dictionary - Fatal编程技术网

Python 使用列表值对字典进行排序

Python 使用列表值对字典进行排序,python,sorting,dictionary,Python,Sorting,Dictionary,我正在从redis键值存储中提取一些数据。 数据采用列表格式。然而,我把它们放到字典里 { name1: [ int1, int2] } { name2: [ int11,int22]} ..etc... 我想创建一个已排序的字典,其中所提取的条目按列表中的int2值排序。我如何才能做到这一点排序和itemgetter 因此,我想要一个排序字典,以便根据列表值的int2值按降序对名称进行排序 我尝试了排序(data,key=itemgetter(2)),但这显然不起作用:(要获得所有名称的排序

我正在从redis键值存储中提取一些数据。 数据采用列表格式。然而,我把它们放到字典里

{ 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)])