4 回答

TA贡献1862条经验 获得超7个赞
您可以尝试列表理解:
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'}]

TA贡献1802条经验 获得超6个赞
对于预期的输出,您需要反转循环顺序,首先循环 v2 列表,然后检查该键是否存在于 V1 中。
for v in v2:
for d in v1:
if d["Key"] == v:
v3.append(d)

TA贡献1785条经验 获得超4个赞
列表理解可能会有所帮助。
尝试这个:
[i for i in v1 if i['Key'] in v2]
结果:
[{'Key': 'State', 'Value': 'UP'}, {'Key': 'Name', 'Value': 'Sam'}, {'Key': 'Product', 'Value': 'cookies'}]
说到预期的 v3,我不确定为什么{'Key': 'Name', 'Value': 'Sam'}
当该元素在 v1 中只出现一次时出现两次。也许错别字?
已编辑
[i for j in v2 for i in v1 if i['Key'] == j]
结果:
[{'Key': 'Name', 'Value': 'Sam'}, {'Key': 'Product', 'Value': 'cookies'}, {'Key': 'State', 'Value': 'UP'}, {'Key': 'Name', 'Value': 'Sam'}]

TA贡献1757条经验 获得超8个赞
尝试像下面这样重构你的第一个字典:
v1 = {'State': 'UP',
'city': 'bihar',
'Name': 'Sam',
'Product': 'cookies',
'id': '23',
'email': 'enim@gmail.com'}
v2 = ['Name', 'Product', 'State','Name']
v3 = dict()
for x in v2:
if x in v1:
print({x: v1.get(x)})
v3.update({x: v1.get(x)})
update 添加记录或在键可用时更新记录,{} 是另一种构造字典的方式
来源: https: //docs.python.org/3/tutorial/datastructures.html
添加回答
举报