python - 如何比较两个列表值并将该值附加到新列表中?
问题描述
list1 = [{'name': 'Tyler', 'age': '12', 'city': 'SF'}, {'name': 'Caitlyn', 'age': '10', 'city': 'SJ'}]
list2 = [{'age': '12', 'hobby': 'soccer', 'song': 'Abba'}, {'age': '10', 'hobby': 'baseball', 'song': 'Punk'}]
这是两个列表,我想比较age
每个匹配的列表并将其附加到 list1。你们能帮我解决这个问题吗?
结果应该是
list1 = [{'name': 'Tyler', 'age': '12', 'city': 'SF', 'age': '12', 'hobby': 'soccer', 'song': 'Abba'}, {'name': 'Caitlyn', 'age': '10', 'city': 'SJ', 'age': '10', 'hobby': 'baseball', 'song': 'Punk'}]
谢谢!
解决方案
如果我理解正确,您希望将每个字典加入list2
到字典中,键list1
中的值相同age
。
尝试这样的事情
def join_by_age(list1, list2):
for item1 in list1:
for item2 in list2:
if item1['age'] == item2['age']:
item1.update(item2)
break
return list1
# Join the two lists.
print(join_by_age(list1, list2))
请记住,list1
将修改 in 中的字典,并且如果 in 中的多个字典list2
具有相同的age
,则只会使用第一个字典。
推荐阅读
- c# - 按钮在设置为非活动和重新激活后无响应
- c - 带有 .c 和 .cpp 文件的 R 包,带有 Rcpp
- docusignapi - Docusign - 设置收件人语言 - 收件人收到的电子邮件始终为英文
- javascript - 无法调用其类型缺少调用签名的表达式。类型没有兼容的调用签名 2349
- html - 为什么后一个块元素的盒子从前一个块元素的内容开始,而不是从前一个元素的边框开始?
- javascript - 使用 ES6 在嵌套循环中返回父匹配
- android - 使用架构组件导航的 android 的 XML 材质转换
- emacs - 我可以在没有更多字母的情况下在 emacs 中选择它吗?
- c++ - 如何/何时在 DirectX 中释放资源和资源视图
- c# - 在每个循环中连接字符串