【发布时间】:2021-03-11 12:00:11
【问题描述】:
字典列表有4个,前两个需要添加到数据库中,后两个已经存在于数据库中:
to_add1 = [{'name': 'Kate', 'age': 25, 'id': 1234},
{'name': 'Claire', 'age': 25, 'id': 4567},
{'name': 'Bob', 'age': 25, 'id': 8910}]
to_add2 = [{'pets': 5, 'name_id': 1234},
{'pets': 0, 'name_id': 4567},
{'pets': 0, 'name_id': 8910}]
existing1 = [{'name': 'John', 'age': 50, 'id': 0000},
{'name': 'Claire', 'age': 25, 'id': 4567}]
existing2 = [{'pets': 2, 'name_id': 0000},
{'pets': 0, 'name_id': 4567}]
我想添加到数据库或在这个可重现的示例中,仅打印不包含 existing1 中的 existing1['name'] 值的项目。所以在这种情况下:来自to_add1 的 Kate 和 Bob 应该打印一次。由于双循环,我得到了重复。如何循环遍历所有这些字典并打印与existing 1 名称匹配的项目而不重复?
我的代码:
for person_to_add, pet_to_add in zip(to_add1, to_add2):
for existing_person, existing_pet in zip(existing1, existing2):
if person_to_add['name'] not in existing_person['name']:
print(person_to_add)
当前输出:
{'name': 'Kate', 'age': 25, 'id': 1234}
{'name': 'Kate', 'age': 25, 'id': 1234}
{'name': 'Claire', 'age': 25, 'id': 4567}
{'name': 'Bob', 'age': 25, 'id': 8910}
{'name': 'Bob', 'age': 25, 'id': 8910}
期望的输出:
{'name': 'Kate', 'age': 25, 'id': 4567}
{'name': 'Bob', 'age': 25, 'id': 8910}
【问题讨论】:
标签: python list dictionary for-loop zip