Вы можете просто использовать itertools
и collections.defaultdict
, например,
>>> import itertools
>>> from collections import defaultdict
>>> one_tup
[('A', 1), ('B', 2), ('C', 3)]
>>> two_tup
[('A', 2), ('B', 4), ('D', 4)]
>>> d = defaultdict(list)
>>> for key, val in itertools.chain.from_iterable([one_tup, two_tup]):
... d[key].append(val)
...
>>> d
defaultdict(<class 'list'>, {'A': [1, 2], 'B': [2, 4], 'C': [3], 'D': [4]})
>>> dict(d)
{'A': [1, 2], 'B': [2, 4], 'C': [3], 'D': [4]}
Примечание: Вы можете использовать defaultdict
с set
вместо list
, если вы этого не сделаетезаботиться о повторяющихся значениях, таких как,
>>> d = defaultdict(set)
>>> for key, val in itertools.chain.from_iterable([one_tup, two_tup]):
... d[key].add(val)
...
>>> d
defaultdict(<class 'set'>, {'A': {1, 2}, 'B': {2, 4}, 'C': {3}, 'D': {4}})
>>> dict(d)
{'A': {1, 2}, 'B': {2, 4}, 'C': {3}, 'D': {4}}