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
在Python2.7中,如何基于另一个数组对一个多数组dict进行排序_Python_Sorting_Dictionary_Multidimensional Array - Fatal编程技术网

在Python2.7中,如何基于另一个数组对一个多数组dict进行排序

在Python2.7中,如何基于另一个数组对一个多数组dict进行排序,python,sorting,dictionary,multidimensional-array,Python,Sorting,Dictionary,Multidimensional Array,我有一些数组中的数据,我想在另一个dict上排序basedPriority 范例 我试图根据refList给定的国家名称对列表进行排序 我看到了类似的东西 newlist = sorted(list['Country'], key=lambda k: refList) 但是它没有给我想要的输出 有什么想法吗?我知道我做错了什么,但我不知道如何 我知道我可以用 for key in refList: 然后比较每个条目并创建一个新的列表,但是对于一个大的输入列表,需要花费很长的时间来完成 我的

我有一些数组中的数据,我想在另一个dict上排序basedPriority 范例

我试图根据refList给定的国家名称对列表进行排序

我看到了类似的东西

newlist = sorted(list['Country'], key=lambda k: refList) 
但是它没有给我想要的输出

有什么想法吗?我知道我做错了什么,但我不知道如何

我知道我可以用

for key in refList:
然后比较每个条目并创建一个新的列表,但是对于一个大的输入列表,需要花费很长的时间来完成

我的Python没有

from collections import OrderedDict
实际的listdifferent名称显然按照我显示的方式添加了数据。。我没有控制权,我只有完整的清单。我只是在代码中显示它们是如何在树中显示的

这可能就是它的样子

{'Country': ['CHINA', 'CHINA', 'USA', 'USA', 'INDIA'], 'Reps': ['Xuan Fo', 'Chan Li', 'Jhon Dugg', 'Michael Bevan', 'Rahul Kartik']}
我想按照我的重新列表优先级对其重新排序

{'Country': ['INDIA','CHINA', 'CHINA', 'USA', 'USA'], 'Reps': ['Rahul Kartik','Xuan Fo', 'Chan Li', 'Jhon Dugg', 'Michael Bevan']}
第一,不要使用列表作为变量名,因为它是一个内置函数。我会使用zip函数将您的两个独立列表合并为代表姓名、国家/地区对的列表

d = list(zip(l['Reps'], l['Country'])) 
要对列表进行排序,您需要使用索引方法在refList中查找国家/地区

要转换回两个列表,请使用zip和splat运算符:

l['Reps'], l['Country'] = zip(*d)

我无法理解,期望的输出是什么?对象会很好,一个Globe对象包含一个国家对象列表/字典,每个国家对象都包含一个代表性对象列表。把国家列在一个名单上,把代表列在另一个名单上似乎不太方便。哦,我建议不要重新分配内置函数列表。+1在TigerhawkT3关于不要将内置函数列表重新分配为其他内容的评论中。那是个糟糕的主意!所以你有一个名为list的dict?原来我在dict list一开始是如何产生的问题上出了问题。这是在一个单一的dict…你的方法也工作…谢谢
d.sort(key=lambda pair: refList.index(pair[1]))
l['Reps'], l['Country'] = zip(*d)