user9168798
user9168798

Reputation:

How to combine each elements in set of dictionary in a list to other set of dictionary list?

suppose if two dictionary list are

l1 = [{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo'}]
l2 = [{'date': 'Tue Mar 6'}, {'date': 'Thu Mar 8'}, {'date': 'Sat Mar 10'}, {'date': 'Mon Mar 12'}, {'date': 'Wed Mar 14'}, {'date': 'Fri Mar 16'}, {'date': 'Sun Mar 18'}]

I want to combine element in l2 to elements of l1 like as follow.

 L3 = [{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo','date': 'Tue Mar 6'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo','date': 'Thu Mar 8'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo','date': 'Sat Mar 10'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo','date': 'Mon Mar 12'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo','date': 'Wed Mar 14'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo','date': 'Fri Mar 16'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo','date': 'Sun Mar 18'}]

which function can I use to do this?

Upvotes: 2

Views: 97

Answers (5)

Code:

L3 = [dict(a.items() + b.items()) for a,b in zip(L1,L2)]

Upvotes: -1

Jay Shankar Gupta
Jay Shankar Gupta

Reputation: 6088

l1 = [{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo'}]
l2 = [{'date': 'Tue Mar 6'}, {'date': 'Thu Mar 8'}, {'date': 'Sat Mar 10'}, {'date': 'Mon Mar 12'}, {'date': 'Wed Mar 14'}, {'date': 'Fri Mar 16'}, {'date': 'Sun Mar 18'}]
print(list(zip(l1,l2)))
l3=[]
for i in zip(l1,l2):
 d=i[0] 
 d.update(i[1]) 
 l3.append(d)
print(l3)

i[0] is {'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}

i[1] is {'date': 'Tue Mar 6'}

Output for

print(list(zip(l1,l2)))

[({'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Tue Mar 6'}), ({'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Thu Mar 8'}), ({'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Sat Mar 10'}), ({'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Mon Mar 12'}), ({'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Wed Mar 14'}), ({'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Fri Mar 16'}), ({'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo'}, {'date': 'Sun Mar 18'})]

print(l3)

[{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Tue Mar 6'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Thu Mar 8'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Sat Mar 10'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Mon Mar 12'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Wed Mar 14'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Fri Mar 16'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Sun Mar 18'}]

Upvotes: -1

Vasilis G.
Vasilis G.

Reputation: 7846

You can do it this way:

l1 = [{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo'}]
l2 = [{'date': 'Tue Mar 6'}, {'date': 'Thu Mar 8'}, {'date': 'Sat Mar 10'}, {'date': 'Mon Mar 12'}, {'date': 'Wed Mar 14'}, {'date': 'Fri Mar 16'}, {'date': 'Sun Mar 18'}]

res = [{**d[0],**d[1]} for d in zip(l1,l2)]
print(res)

Output:

[{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Tue Mar 6'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Thu Mar 8'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Sat Mar 10'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Mon Mar 12'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Wed Mar 14'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Fri Mar 16'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo', 'date': 'Sun Mar 18'}]

You can take a look here to see how to merge dictionaries.

Upvotes: 4

Rahul
Rahul

Reputation: 11520

res = [{**x, **y} for x, y in zip(l1, l2)]

Upvotes: 2

Rakesh
Rakesh

Reputation: 82765

This should help.

l1 = [{'name': '1st Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '2nd Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '3rd Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '4th Match - Sri Lanka v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '5th Match - Bangladesh v India', 'place': 'R Premadasa Stadium, Colombo'}, {'name': '6th Match - Sri Lanka v Bangladesh', 'place': 'R Premadasa Stadium, Colombo'}, {'name': 'Final - TBC v TBC', 'place': 'R Premadasa Stadium, Colombo'}]
l2 = [{'date': 'Tue Mar 6'}, {'date': 'Thu Mar 8'}, {'date': 'Sat Mar 10'}, {'date': 'Mon Mar 12'}, {'date': 'Wed Mar 14'}, {'date': 'Fri Mar 16'}, {'date': 'Sun Mar 18'}]

l3 = []
for i in zip(l1, l2):
    val = i[0]
    val.update((i[1]))
    l3.append(val)
print l3 

Output:

[{'date': 'Tue Mar 6', 'place': 'R Premadasa Stadium, Colombo', 'name': '1st Match - Sri Lanka v India'}, {'date': 'Thu Mar 8', 'place': 'R Premadasa Stadium, Colombo', 'name': '2nd Match - Bangladesh v India'}, {'date': 'Sat Mar 10', 'place': 'R Premadasa Stadium, Colombo', 'name': '3rd Match - Sri Lanka v Bangladesh'}, {'date': 'Mon Mar 12', 'place': 'R Premadasa Stadium, Colombo', 'name': '4th Match - Sri Lanka v India'}, {'date': 'Wed Mar 14', 'place': 'R Premadasa Stadium, Colombo', 'name': '5th Match - Bangladesh v India'}, {'date': 'Fri Mar 16', 'place': 'R Premadasa Stadium, Colombo', 'name': '6th Match - Sri Lanka v Bangladesh'}, {'date': 'Sun Mar 18', 'place': 'R Premadasa Stadium, Colombo', 'name': 'Final - TBC v TBC'}]

Upvotes: 2

Related Questions