首页 > 解决方案 > 比较 2 个列表并将值附加到新的字典列表

问题描述

我是python的初学者,试图返回字典v3的新列表,当列表v2中的值等于字典v1列表的键时。字典 v3 的新列表应包含匹配的键和值。

v1 = [
    {"Key": "State", "Value": "UP"},
    {"Key": "city", "Value": "bihar"},
    {"Key": "Name", "Value": "Sam"},
    {"Key": "Product", "Value": "cookies"},
    {"Key": "id", "Value": "23"},
    {"Key": "email", "Value": "enim@gmail.com"},
]
v2 = ["Name", "Product", "State", "Name"]
v3 = []

预期的输出应该是

v3 = [
    {"Key": "Name", "Value": "Sam"},
    {"Key": "Product", "Value": "cookies"},
    {"Key": "State", "Value": "UP"},
    {"Key": "Name", "Value": "Sam"},
]

以下是我尝试过的代码,但代码不完整

for bb in v1:
    if bb['Key'] in v2:
        v3.append({bb['Key']:bb['Value']})

标签: pythonpython-3.x

解决方案


您可以尝试使用列表理解:

v3=[dc for val  in v2 for dc in v1 if val==dc['Key']]

输出:

v3
[{'Key': 'Name', 'Value': 'Sam'}, {'Key': 'Product', 'Value': 'cookies'}, {'Key': 'State', 'Value': 'UP'}, {'Key': 'Name', 'Value': 'Sam'}]

推荐阅读