Home > other >  Python : Merge three lists of tuples according the first element of the tuple to add the seconds ele
Python : Merge three lists of tuples according the first element of the tuple to add the seconds ele

Time:12-07

I have three lists of tuples of size 2 given by :

a1 = [(47, 100)]
a2 = [(47, 100), (0, 86), (4, 86)]
a3 = [(47, 100), (39, 90)]

I want to merge them and remove the duplicates according the first element of the tuples. With the second, we add them. So we should get

a = [(47, 300) , (0, 86), (4, 86), (39, 90)]

How can i do that ?

Thank you

CodePudding user response:

combined = a1   a2   a3
seen = set()
desired_output = [(a, b) for a, b in combined if not (a in seen or seen.add(a))]

EDIT: I missed the part of the question of summing up the numbers. Sorry about that. Here is my edited answer addressing that part:

mydict = dict()

for a, b in combined:
   if a in mydict:
      mydict[a]  = b
   else:
      mydict[a] = b

final_tuple = list(mydict.items())

CodePudding user response:

Try:

a1 = [(47, 100)]
a2 = [(47, 100), (0, 86), (4, 86)]
a3 = [(47, 100), (39, 90)]

out = {}
for l in [a1, a2, a3]:
    for x, y in l:
        out[x] = out.get(x, 0)   y

out = list(out.items())
print(out)

Prints:

[(47, 300), (0, 86), (4, 86), (39, 90)]
  • Related