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

如果在第二个 dicts 列表(在 python 中)中找不到 id,如何从列表中分离 dicts?

如果在第二个 dicts 列表(在 python 中)中找不到 id,如何从列表中分离 dicts?

梦里花落0921 2021-08-11 19:47:49
我有两个字典列表list1 = [    {"name": "Maria",     "id": "16a",     },     {"name": "Tania",     "id": "13b",     },    {"name": "Steve",     "id": "5a",     }]list2 = [    {"name": "Eric",     "id": "16a",     },     {"name": "Mike",     "id": "7b",     },    {"name": "Steve",     id: "57a",     }]如果在 list1 中找不到相同的 id,我希望能够从 list2 返回一个 dicts 列表例如,它应该返回[    {"name": "Mike",     "id": "7b",     },    {"name": "Steve",     "id": "57a",     }]我在这里尝试了一些关于堆栈溢出的建议,但没有得到正确的解决。
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

使用遍历list2检查idwith ids in的列表理解list1:


list1 = [

    {'name': "Maria", 

    'id': "16a", 

    }, 

    {'name': "Tania", 

    'id': "13b", 

    },

    {'name': "Steve", 

    'id': "5a", 

    }

]


list2 = [

    {'name': "Eric", 

    'id': "16a", 

    }, 

    {'name': "Mike", 

    'id': "7b", 

    },

    {'name': "Steve", 

    'id': "57a", 

    }

]


list1_ids = [y['id'] for y in list1]

result = [x for x in list2 if x['id'] not in list1_ids]

# [{'name': 'Mike', 'id': '7b'}, {'name': 'Steve', 'id': '57a'}]


查看完整回答
反对 回复 2021-08-11
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

这应该做:

[d2 for d2 in list2 if d2['id'] not in [d1['id'] for d1 in list1]]

输出:

[{'id': '7b', 'name': 'Mike'}, {'id': '57a', 'name': 'Steve'}]


查看完整回答
反对 回复 2021-08-11
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您也可以使用filter功能来做到这一点:


list1 = [

    {"name": "Maria", 

    "id": "16a", 

    }, 

    {"name": "Tania", 

    "id": "13b", 

    },

    {"name": "Steve", 

    "id": "5a", 

    }

]



list2 = [

    {"name": "Eric", 

    "id": "16a", 

    }, 

    {"name": "Mike", 

    "id": "7b", 

    },

    {"name": "Steve", 

    "id": "57a", 

    }

]


IDs = set(value["id"] for value in list1)

output = list(filter(lambda elem: elem["id"] not in IDs, list2))

print(output)

输出:


[{'name': 'Mike', 'id': '7b'}, {'name': 'Steve', 'id': '57a'}]


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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