为了账号安全,请及时绑定邮箱和手机立即绑定

比较 2 个列表并将值附加到新的字典列表

比较 2 个列表并将值附加到新的字典列表

有只小跳蛙 2023-03-08 13:58:36
我是 python 初学者,当列表 v2 中的值等于字典 v1 列表的键时,试图返回一个新的字典 v3 列表。字典 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']})
查看完整描述

4 回答

?
牧羊人nacy

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


查看完整回答
反对 回复 2023-03-08
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

对于预期的输出,您需要反转循环顺序,首先循环 v2 列表,然后检查该键是否存在于 V1 中。


for v in v2:

    for d in v1:

      if d["Key"] == v:

         v3.append(d)       


查看完整回答
反对 回复 2023-03-08
?
九州编程

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


查看完整回答
反对 回复 2023-03-08
?
陪伴而非守候

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


查看完整回答
反对 回复 2023-03-08
  • 4 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号