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'}]