Python не допускает дублирования ключей в словарях.В чем-то похожем на ваш пример:
>>> d={100:1, 90:2, 90:3, 80:3, 70:4}
>>> d[90]
3
Если он допускает дублирование ключей, у него нет возможности узнать, вернуть ли 2
или 3
для 90
.
Вы можете использовать collections.Counter
, если хотите отслеживать количество кортежей:
from collections import Counter
listy = [[(100, 1), (90, 2), (90, 2), (80, 3), (70, 4)], [(100, 1), (90, 2), (90, 2), (80, 3), (80, 3)]]
count = [Counter(x) for x in listy]
print(count)
, что дает вывод:
[Counter({(90, 2): 2, (100, 1): 1, (80, 3): 1, (70, 4): 1}), Counter({(90, 2): 2, (80, 3): 2, (100, 1): 1})]
Или,если все, что вы хотите сделать, это связать ключи со значениями, вы можете использовать что-то вроде этого:
class update:
def __init__(self):
self.items = {}
def add(self, number, value):
if number in self.items: # if we've seen this key before
self.items[number].append(value) # add it to the list
else: # if we haven't, create a new list
self.items[number] = [value]
def __repr__(self):
return str(self.items)
update_lists = []
for l in listy:
u = update()
for (k, v) in l:
u.add(k, v)
update_lists.append(u)
print(update_lists)
, который дает следующий вывод:
[{100: [1], 90: [2, 2], 80: [3], 70: [4]}, {100: [1], 90: [2, 2], 80: [3, 3]}]