2014-11-23 118 views
0

我是python的新手,习惯于php,我想弄清楚如何将来自多个数据集的json.loads合并为一个。在python中梳理多个json加载

这是我有:

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())); 

结果:

VAR: {u'root ':[{u'List1':[1,2,3]中,u”项目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'}]}

deepcopy: {u'root':[{u'L 1'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'item 2':u'2'}]}

+0

检查http://stackoverflow.com/questions/38987/how-can-i-merge-two-python-dictionaries-in-a-single-expression – brainovergrow 2014-11-23 14:15:45

+0

谢谢,这就是我得到的“字典副本”项目我尝试过,打印结果#4。不幸的是,不这样做,我相信它是因为解析的JSON是字典和列表的混合。 – 2014-11-23 14:32:12

+0

@brainovergrow那种情况比一个OP更复杂一点在 – dursk 2014-11-23 15:06:50

回答

1

这应该会让你想要你想要的:

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

虽然我不确定为什么value在关键'root'是一个单一dict元素的列表。
如果这是没有必要的,这将会是一个更加简洁,如果value只是在dict本身,那么你可以做:

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

我正在加载多个JSON文件,我需要将它们合并成一个数组。该结构是JSON文件如何加载的简化示例。这工作表示感谢,所以如果我想为所有情况下这个工作,我可以创建一个函数来循环数组1的每个元素和更新数组2? – 2014-11-23 16:46:46

0

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

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

干杯!