Проблема, с которой вы сталкиваетесь, состоит в том, что значение ключа инициализируется как int (k)
вместо list ([k])
.Когда вы пытаетесь позвонить .append
на int
, вы получаете AttributeError
.
Питонный способ инициализации ключа значением по умолчанию состоит в том, чтобы использовать либо dict.setdefault
, либо defaultdict
, чтобы ваш тип значения инициализировался как список при добавлении нового ключа.
Использование defaultdict
с default_factory=list
автоматически создает новый список при каждом добавлении ключа в dict
:
from collections import defaultdict
M = int(input())
mydict = defaultdict(list) # passing list as the default type
for i in range (M):
j,k = map(int, input().split())
mydict[j].append(k)
print(mydict)
В качестве альтернативы, вы можете использовать dict.setdefault
:
M = int(input())
mydict = {}
for i in range (M):
j,k = map(int, input().split())
mydict.setdefault(j, []).append(k) # using setdefault to initialise as a list
print(mydict)
Наконец, если вы все еще предпочитаете использовать блок except
, измените строку 8 в оригинале на mydict[j] = [k]
edit: typo