添加到json匹配的键



我有这样的json (no.1)

[
{
'id': 1,
'data': '...'
},
{
'id': 2,
'data': '...'
}
]

我想把它附加到另一个json中也就是(no.2)

[
{
'id': 1,
'data_additional': '...'
},
{
'id': 2,
'data_additional': '...',
}
]

,输出应该是:(no1 + no2)

[
{
'id': 1,
'data': '...',
'data_additional': '...'
},
{
'id': 2,
'data': '...',
'data_additional': '...'
}
]

我如何在python中做到这一点?我试过用for循环,还有其他方法吗?

no3 = {}
if len(no1) == len(no2):
for x in range(len(no1)):
for y in range(len(no2)):
if no1[x]['id'] == no2[y]['id']:
no3[x].append({**no1[x], **no2[y]})

类似下面的内容(不需要外部库)

d1 = [
{
'id': 1,
'data': 'WWW'
},
{
'id': 2,
'data': 'KKK'
}
]
d2 = [
{
'id': 1,
'data_additional': 'AAA'
},
{
'id': 2,
'data_additional': 'BBB',
}
]
#
# assuming the lists are sorted by id
#
data = []
for idx,entry in enumerate(d1,):
data.append(entry)
data[-1].update(d2[idx])
print(data)

输出
[{'id': 1, 'data': 'WWW', 'data_additional': 'AAA'}, {'id': 2, 'data': 'KKK', 'data_additional': 'BBB'}]

您可以使用pandas'join方法进行此操作,以简化和速度:

import pandas as pd
df1 = pd.DataFrame(json1).set_index('id')
df2 = pd.DataFrame(json2).set_index('id')
df1.join(df2).reset_index().to_dict(orient='records')

set_index呼叫保证join按id加入记录。reset_index确保调用to_dict(将数据帧转换回json)也将包含id。

相关内容

  • 没有找到相关文章