我有这样的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。