2

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?

Rahul
  • 10,830
  • 4
  • 53
  • 88

5 Answers5

4

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.

Vasilis G.
  • 7,556
  • 4
  • 19
  • 29
2

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'}]
Rakesh
  • 81,458
  • 17
  • 76
  • 113
2
res = [{**x, **y} for x, y in zip(l1, l2)]
Rahul
  • 10,830
  • 4
  • 53
  • 88
  • your answer worked for me thanks, for others I was getting TypeError: 'ResultSet' object is not callable –  Mar 07 '18 at 13:43
-1
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'}]

Jay Shankar Gupta
  • 5,918
  • 1
  • 10
  • 27
  • Oh! its simple as that thanks @jayshankargupta, is this the effective way to do or there any other method to do? –  Mar 07 '18 at 11:58
  • This does not answer the question. The OP wants 'name', 'place' and 'date' in the same dictionary. – Xebax Mar 07 '18 at 12:07
-1

Code:

L3 = [dict(a.items() + b.items()) for a,b in zip(L1,L2)]
Dherik
  • 17,757
  • 11
  • 115
  • 164