Словари Python не поддерживают дубликаты ключей.
Вместо этого вы можете сопоставить несколько значений (список) с одним и тем же ключом с помощью collections.defaultdict()
:
from collections import defaultdict
t = ((1,1),(1,10),(1,100),(1,1000),(2,2),(2,20),(2,200),(2,2000),(3,3),
(3,30),(3,300),(3,3000),(4,4),(4,40),(4,400),(4,4000))
d = defaultdict(list)
for x, y in t:
d[x].append(y)
print(d)
, что дает следующий словарь:
defaultdict(<class 'list'>, {1: [1, 10, 100, 1000], 2: [2, 20, 200, 2000], 3: [3, 30, 300, 3000], 4: [4, 40, 400, 4000]})
Примечание: defaultdict()
- это просто подкласс встроенного класса dict
, поэтому вы можете обращаться с ним так же, как с обычным словарем.
Если вы предпочитаете не использовать библиотеки, dict.setdefault()
также является опцией:
t = ((1,1),(1,10),(1,100),(1,1000),(2,2),(2,20),(2,200),(2,2000),(3,3),
(3,30),(3,300),(3,3000),(4,4),(4,40),(4,400),(4,4000))
d = {}
for x, y in t:
d.setdefault(x, []).append(y)
print(d)
# {1: [1, 10, 100, 1000], 2: [2, 20, 200, 2000], 3: [3, 30, 300, 3000], 4: [4, 40, 400, 4000]}