根据键值合并两个字典列表

时间:2021-07-07 04:02:36

标签: python dictionary merge

我有两个字典列表:

a =[{ 'id': "1", 'date': "2017-01-24" },{ 'id': "2", 'date': "2018-01-24" },{ 'id': "3", 'date': "2019-01-24" }]
b =[{ 'id': "1", 'name': "abc" },{ 'id': "2",'name': "xyz"},{ 'id': "4",'name': "ijk"}]

我想根据id合并这些字典,结果应该是:

[{ 'id': "1", 'date': "2017-01-24",'name': "abc" },{ 'id': "2", 'date': "2018-01-24",'name': "xyz" },{ 'id': "3", 'date': "2019-01-24" },{ 'id': "4",'name': "ijk"}]

如何在不使用 python 迭代的情况下执行此操作?

1 个答案:

答案 0 :(得分:3)

由于字典存储在列表中,您要么必须迭代,要么使用矢量化方法,例如熊猫....例如:

import pandas as pd
a =[{ 'id': "1", 'date': "2017-01-24" },{ 'id': "2", 'date': "2018-01-24" }]
b =[{ 'id': "1", 'name': "abc" },{ 'id': "2",'name': "xyz"}]

df1 = pd.DataFrame(a)
df2 = pd.DataFrame(b)
out = df1.merge(df2, on='id').to_dict('r')

结果:

[{'id': '1', 'date': '2017-01-24', 'name': 'abc'}, {'id': '2', 'date': '2018-01-24', 'name': 'xyz'}]

没有测试,我不确定这在速度方面与简单的迭代相比如何。迭代可能需要很长时间,但 Pandas 还必须构建数据帧并将输出转换为 dict,因此需要权衡

相关问题