首页 > 解决方案 > 追加到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]})

标签: jsonpython-3.xdictionary

解决方案


为了简单和快速,您可以使用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。


推荐阅读