[英]Sort list of dictionaries by another list
按另一個列表對字典列表進行排序。 我有帶有字典的列表( IN
),我想按另一個列表( sortValue
)對其進行排序。
IN = [{
"id": "a",
"val": "Value",
"val1": "Value1"
},
{
"id": "b",
"val": "Value",
"val1": "Value1"
},
{
"id": "c",
"val": "Value",
"val1": "Value1"
}]
sortValue = ['b','c','a']
我想要輸出
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':'c','val':'Value '},{'val1':'Value1','id':'a','val':'Value'}]]
您還可以使用已sorted
功能的key
參數。 在您的情況下,您需要為列表中每個項目的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'}]
有關在其Wiki上使用python進行排序的更多信息。
構建一個字典,將ID映射到具有該ID的字典,然后遍歷sortValue
列表並為每個ID值選擇字典:
id2dict = dict((d['id'], d) for d in IN)
OUT = [id2dict[x] for x in sortValue]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.