python - 在python中合并两个列表
问题描述
我有一个简单的任务,但无法弄清楚。
a = [{'name': 'Helen', 'age': '12', 'total_money':'12000'}, {'name': 'Victor', 'age':'20', 'total_money': '32999'}]
b = [{'name': 'Helen', 'age': '12', 'total_gold':'14'}]
我只想在上面列出,如果 和 的值name
相同,age
则将其组合在一起。如果不一样,请保持原样。
预期产出
output = [{'name': 'Helen', 'age': '12', 'total_money':'12000', 'total_gold':'14'}, {'name': 'Victor', 'age':'20', 'total_money': '32999'}]
这是我迄今为止尝试过的(不工作)
c = a + b
data = {}
for item in c:
key = item["name"]+'-'+item["age"]
if key in data:
if data[key]["total_money"] in data[key]:
data[key]["total_gold"] = item["total_gold"]
else:
data[key]["total_money"] = item["total_money"]
else:
data[key] = item
data[key]["total_money"] = item['total_money'] if 'total_money' in item else 0
data[key]["total_gold"] = item['total_gold'] if 'total_gold' in item else 0
我有一种感觉,我想多了。任何建议将不胜感激。谢谢你。
解决方案
好像你想合并两个字典,可以这样做:
a = {'name': 'Helen', 'age': '12', 'total_money':'12000'}
b = {'name': 'Helen', 'age': '12', 'total_gold':'14'}
z = {**a, **b}
z
{'name': 'Helen', 'age': '12', 'total_money': '12000', 'total_gold': '14'}
如果您想维护列表结构(假设您计划将多个字典作为这些列表的元素):
a = [{'name': 'Helen', 'age': '12', 'total_money':'12000'}]
b = [{'name': 'Helen', 'age': '12', 'total_gold':'14'}]
z = []
for i in range(len(a)):
z.append({**a[i], **b[i]})
编辑:
z = []
for ele in a:
for piece in b:
if ele["name"] == piece["name"] and ele["age"] == piece["age"]:
z.append({**ele, **piece})
else:
z.append(ele)
推荐阅读
- android - Android Management API 设备安装、删除等
- php - 带有 Firebase JWT 的 PHP Slim
- c# - Xml 反序列化。是否可以从xml保存字符串格式?
- python - 应用 GA 运算符后,原始列表发生了变异
- python-3.x - 在标签类别下输入用户名
- android - ffmpeg 无法确定输入流 0:0 的格式后 EOF 错误将某些 mkv 视频的过滤器标记为已完成
- excel - 移动工作表后,Excel 中的替换功能不再起作用
- java - Java Android OpenCV - 添加饱和语法
- python - 运行图像分割时在第一次迭代时获得 NAN
- scala - 加特林测试中未更新馈线值