FrahChan04
FrahChan04

Reputation: 198

Merge two json file using Python

I'm new to python. Can anyone help in solving this problem? I have this problem to merge json a and json b using unique id

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'}]

Output

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

Upvotes: 1

Views: 106

Answers (2)

Underoos
Underoos

Reputation: 5180

Try this.

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)

Output:

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

Upvotes: 1

ExplodingGayFish
ExplodingGayFish

Reputation: 2897

Here is one simple way:

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'}]

Upvotes: 0

Related Questions