System.getProperty("java.runtime.version")
当我运行代码时:
M = int(input())
mydict = {}
for i in range (M):
j,k = map(int, input().split())
try:
mydict[j].append(k)
except KeyError :
mydict[j] = k
print(mydict)
答案 0 :(得分:3)
您遇到的问题是密钥的值初始化为int (k)
而不是list ([k])
。当您尝试在.append
上呼叫int
时,会得到AttributeError
。
使用默认值初始化键的Python方法是使用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]
编辑:错字