Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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

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 - Fatal编程技术网

Python 按另一个列表对词典列表进行排序

Python 按另一个列表对词典列表进行排序,python,sorting,Python,Sorting,按另一个列表对词典列表进行排序。 我有一个字典列表(中的),我想按另一个列表(sortValue)对其进行排序 我想要输出 OUT = [{ "id": "b", "val": "Value", "val1": "Value1" }, { "id": "c", "val": "Value", "val1": "Value1" }, { "id

按另一个列表对词典列表进行排序。 我有一个字典列表(中的
),我想按另一个列表(
sortValue
)对其进行排序

我想要输出

OUT  = [{
        "id": "b", 
        "val": "Value", 
        "val1": "Value1"
    }, 
    {
        "id": "c", 
        "val": "Value", 
        "val1": "Value1"
    },
    {
        "id": "a", 
        "val": "Value", 
        "val1": "Value1"
    }]
如何得到这样的东西

我试过:

OUT = []
for xx in sortValue:
    for x in IN:
        if x['id'] == xx:
            OUT.append(x)
print OUT
del OUT
但dict的价值参差不齐。
[{'val1':'Value1','id':'b','val':'Value'},{'val1':'Value1','id':'a','val':'Value'},{'Value1','id':'a','val':'Value'},{/p>构建一个字典,将id映射到具有该id的字典,然后浏览
sortValue
列表,为每个id值选择字典:

id2dict = dict((d['id'], d) for d in IN)
OUT = [id2dict[x] for x in sortValue]

您还可以使用
排序
功能的
参数。在您的情况下,您需要列表中每个项目的
id
的sortValue索引:

>>> pprint(sorted(IN,key=lambda x:sortValue.index(x['id'])))
[{'id': 'b', 'val': 'Value', 'val1': 'Value1'},
 {'id': 'c', 'val': 'Value', 'val1': 'Value1'},
 {'id': 'a', 'val': 'Value', 'val1': 'Value1'}]

更多关于在其上使用python排序的信息。

请显示您的代码。到目前为止您做了什么?可能重复了不相同的@bvidal
>>> pprint(sorted(IN,key=lambda x:sortValue.index(x['id'])))
[{'id': 'b', 'val': 'Value', 'val1': 'Value1'},
 {'id': 'c', 'val': 'Value', 'val1': 'Value1'},
 {'id': 'a', 'val': 'Value', 'val1': 'Value1'}]