Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python合并两个json文件_Python_Json_Dictionary - Fatal编程技术网

使用Python合并两个json文件

使用Python合并两个json文件,python,json,dictionary,Python,Json,Dictionary,我是python新手。有人能帮忙解决这个问题吗? 我在使用唯一id合并json a和json b时遇到了这个问题 a = [{'id': 1, 'name': 'a', 'e_data': {'reading':'', 'writing':''}}, {'id': 2, 'name': 'b', 'e_data': {'reading':'', 'writing':''}}] b = [{'id':1,'reading':'2','writing':'3'}, {'id':2

我是python新手。有人能帮忙解决这个问题吗? 我在使用唯一id合并json a和json b时遇到了这个问题

a = [{'id': 1, 'name': 'a', 'e_data': {'reading':'', 'writing':''}},
    {'id': 2, 'name': 'b', 'e_data': {'reading':'', 'writing':''}}]

b = [{'id':1,'reading':'2','writing':'3'}, 
    {'id':2,'reading':'3','writing':'3'}]
输出
这里有一个简单的方法:

a = [{'id': 1, 'name': 'a', 'e_data': {'reading':'', 'writing':''}},
    {'id': 2, 'name': 'b', 'e_data': {'reading':'', 'writing':''}}]

b = [{'id':1,'reading':'2','writing':'3'}, 
    {'id':2,'reading':'3','writing':'3'}]

for dest in a:
    for source in b:
        if source['id'] == dest['id']:
            dest['e_data'].update(source)
a  

#[{'e_data': {'id': 1, 'reading': '2', 'writing': '3'}, 'id': 1, 'name': 'a'},
#{'e_data': {'id': 2, 'reading': '3', 'writing': '3'}, 'id': 2, 'name': 'b'}]
试试这个

a = [{'id': 1, 'name': 'a', 'e_data': {'reading':'', 'writing':''}},
    {'id': 2, 'name': 'b', 'e_data': {'reading':'', 'writing':''}}]

b = [{'id':1,'reading':'2','writing':'3'},
    {'id':2,'reading':'3','writing':'3'}]

for i in a:
    for j in b:
        if j['id'] == i['id']:
            i['e_data'].update(j)
            i['e_data'].pop('id')

print(a)
输出:

[{'id': 1, 'name': 'a', 'e_data': {'reading': '2', 'writing': '3'}}, {'id': 2, 'name': 'b', 'e_data': {'reading': '3', 'writing': '3'}}]
[{'id': 1, 'name': 'a', 'e_data': {'reading': '2', 'writing': '3'}}, {'id': 2, 'name': 'b', 'e_data': {'reading': '3', 'writing': '3'}}]