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

2024-10-17 08:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

按另一个列表对词典列表进行排序。 我有一个带字典的列表(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']

我想要输出

^{pr2}$

怎么弄到这样的东西?在

我试过:

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


Tags: inid列表for字典排序valueval
2条回答

构建一个字典,将ID映射到具有该ID的字典,然后查看sortValue列表,为每个ID值选择字典:

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

也可以使用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'}]

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

相关问题 更多 >