python如何合并字典组成了列表

看着奢扣 2018-11-01 10:28:18
a = [{'time': '2018-10-31', 'value_1' : '20'},
{'time': '2018-11-01', 'value_1' : '30'}]
b = [{'time': '2018-10-31', 'value_2' : '13'},
{'time': '2018-11-01', 'value_2' : '15'}]

希望按time合并成a,b
[{'time': '2018-10-31', 'value_1' : '20', 'value_2' : '13'},
{'time': '2018-11-01', 'value_1' : '30','value_2' : '15'}]

请 大牛赐教
...全文
323 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2018-11-01
  • 打赏
  • 举报
回复
如果能严格保证a和b数据对齐,用2楼方法即可。

下面的算法不依赖数据对齐和时间有序,更健壮一些。



a = [{'time': '2018-10-31', 'value_1' : '20'},{'time': '2018-11-01', 'value_1' : '30'}]
b = [{'time': '2018-10-31', 'value_2' : '13'},{'time': '2018-11-01', 'value_2' : '15'}]

from itertools import chain
m = {}
for d in chain(a,b):
time = d['time']
if time in m:
m[time].update(d)
else:
m[time] = dict(d)

print(list(m.values()))

# [{'time': '2018-10-31', 'value_1': '20', 'value_2': '13'}, {'time': '2018-11-01', 'value_1': '30', 'value_2': '15'}]
手无护鸡之力 2018-11-01
  • 打赏
  • 举报
回复

for aa, bb in zip(a, b):
aa.update(bb)
print(a)

[{'time': '2018-10-31', 'value_1' : '20', 'value_2' : '13'},
{'time': '2018-11-01', 'value_1' : '30','value_2' : '15'}]
qq_41429841 2018-11-01
  • 打赏
  • 举报
回复
a = [{'time': '2018-10-31', 'value_1': '20'}, {'time': '2018-11-01', 'value_1': '30'}] b = [{'time': '2018-10-31', 'value_2': '13'}, {'time': '2018-11-01', 'value_2': '15'}] list1 = [] for i in a: for j in b: if i['time'] == j['time']: dict1 = i.copy() dict1.update(j) list1.append(dict1) print(list1)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧