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)]