json - 追加到key匹配的json
问题描述
我有这样的 json (no.1)
[
{
'id': 1,
'data': '...'
},
{
'id': 2,
'data': '...'
}
]
我想附加到这个看起来像(第 2 号)的其他 json
[
{
'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]})
解决方案
为了简单和快速,您可以使用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。
推荐阅读
- databricks - Databricks - How to remove files , directories based on regular expression
- reactjs - Unable to run jest tests in React typescript. Jest encountered an unexpected token
- python - Connect Django to Azure Analysis Services
- css - CSS Grid:内容在错误的行中
- spring-security - How to override the OAuth2AuthorizationServerSecurity's config?
- c++ - GPU with OpenCL is slower than CPU. Why?
- mongodb - Getting indices of distinct value in an array for each document
- firebase - TypeError: Cannot read property 'headersSent' of undefined at headersSent (/workspace/node_modules/finalhandler/index.js:256:21)
- python - how to convert PBM file to list/array?
- amazon-web-services - Terraform with aws to select ami based on tag with sort