【问题标题】:Combing multiple json loads in python在python中组合多个json加载
【发布时间】:2015-01-21 06:42:36
【问题描述】:

我是python的新手,习惯了php,我正在尝试弄清楚如何将来自多个数据集的json.loads合并为一个。

这就是我所拥有的:

import json
var = json.loads('{"root": [{"item 1": "1","item 2": "2","List1": [1,2,3]}]}')
var2 = json.loads('{"root": [{"item 1": "1","item 2": "2","List2": [1,2,3]}]}')
import pprint

print 'var:'
pprint.pprint(var);
print 'var2:'
pprint.pprint(var2);

print 'deepcopy:' 
import copy;
var3 = var;
var3 = copy.deepcopy(var2);
pprint.pprint(var3);

print 'dict copy:'
pprint.pprint(dict(var.items() + var2.items()));

结果:

变量: {u'root': [{u'List1': [1, 2, 3], u'item 1': u'1', u'item 2': u'2'}]}

var2: {u'root': [{u'List2': [1, 2, 3], u'item 1': u'1', u'item 2': u'2'}]}

深拷贝: {u'root': [{u'List2': [1, 2, 3], u'item 1': u'1', u'item 2': u'2'}]}

字典副本: {u'root': [{u'List2': [1, 2, 3], u'item 1': u'1', u'item 2': u'2'}]}

我正在寻找类似的结果(包括两个列表),但包括重复的项目也会有帮助,因为这样我就会朝着正确的方向前进:

{u'root': [{u'List1': [1, 2, 3], u'List2': [1, 2, 3], u'item 1': u'1', u'项目 2': u'2'}]}

【问题讨论】:

  • 谢谢,这就是我尝试的“dict copy”项目,打印结果#4。不幸的是,这并没有这样做,我相信这是因为解析的 JSON 是字典和列表的混合体。
  • @brainovergrow 这种情况比 OP 所处的情况要复杂一些

标签: python json list dictionary merge


【解决方案1】:

这应该给你想要的:

var3 = var
var3['root'][0].update(var2['root'][0])

虽然我不确定为什么 value'root' 是一个带有单个 dict 元素的列表。
如果这不是必需的,那么如果 value 只是 dict 本身会更干净,那么你可以这样做:

var3 = var
var3['root'].update(var2['root'])

【讨论】:

  • 我正在加载多个 JSON 文件,我需要将它们组合成一个数组。该结构是 JSON 文件加载方式的简化示例。谢谢,所以如果我想让它适用于所有情况,我可以创建一个函数来循环遍历数组 1 的每个元素并使用数组 2 进行更新?
【解决方案2】:

这不是 JSON 问题,而是 Python dict() 问题,因为 json.loads() 的输出是字典。你真正想要的是一种结合两个字典的方法。要创建所需的结果,您可以这样做

var3['root'] = var1.update(var2['root'])

干杯!

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2020-02-29
    • 2013-10-08
    • 2016-04-17
    • 2019-12-19
    • 2020-08-06
    相关资源
    最近更新 更多