python - 在python中合并两个json对象
问题描述
我在python中合并两个json
我正在做
import json
json_obj = json.dumps({"a": [1,2]})
json_obj1 = json.dumps({"a": [3,4]})
json_obj += json_obj1
print(json_obj)
我期待输出为
{"a": [1, 2,3,4]}
但我得到了
{"a": [1, 2]}{"a": [3, 4]}
怎样才能拿到较早的?
解决方案
在 json 模块中,dumps 将 python 对象转换为字符串,loads 将字符串转换为 python 对象。因此,在您的原始代码中,您只需尝试连接两个 json-string。尝试像这样编写代码:
import json
from collections import defaultdict
def merge_dict(d1, d2):
dd = defaultdict(list)
for d in (d1, d2):
for key, value in d.items():
if isinstance(value, list):
dd[key].extend(value)
else:
dd[key].append(value)
return dict(dd)
if __name__ == '__main__':
json_str1 = json.dumps({"a": [1, 2]})
json_str2 = json.dumps({"a": [3, 4]})
dct1 = json.loads(json_str1)
dct2 = json.loads(json_str2)
combined_dct = merge_dict(dct1, dct2)
json_str3 = json.dumps(combined_dct)
# {"a": [1, 2, 3, 4]}
print(json_str3)
推荐阅读
- python - 张量流模型和转换后的 tflite 之间的精度下降
- javascript - 如何在 chart.js 工具提示中显示额外数据?
- kotlin - Kotlin - 如何对列表中的特定元素求和?
- python - python中Web应用程序中的类实例用法
- javascript - Javascript如何在这个动画上使用while循环?
- php - 如何在 Laravel Blade 中检索(在控制器中)和显示视频
- sbt - sbt 中的 settings(inThisBuild(...)) 是什么意思?
- android - 如何等到函数返回值颤动
- bigbluebutton - 使用外部 Freeswitch 配置 BigBlueButton
- javascript - 如何在功能组件中将一种状态与另一种状态相等