所以我有这些值的文件:
AFG,13,0,0,2
ALG,15,5,2,8
ARG,40,18,24,28
存储到这样的字典中:
{'ARG': (40, 18, 24, 28), 'ALG': (15, 5, 2, 8), 'AFG': (13, 0, 0, 2)}
我有一个让用户按下键的功能,它应该返回包含数字的元组。
但是,如果我输入AFG,我会得到:
Traceback (most recent call last):
File "C:\Users\username\Dropbox\Programming\Python\Project3.py", line 131, in <module>
main()
File "C:\Users\username\Dropbox\Programming\Python\Project3.py", line 110, in main
findMedals(countryDictionary, MedalDictionary)
File "C:\Users\username\Dropbox\Programming\Python\Project3.py", line 88, in findMedals
answer.append([medalDict[medalCount]])
KeyError: (13, 0, 0, 2)
正如您所看到的,KeyError为输入的密钥提供了正确的值,但为什么它还在抱怨呢? KeyError是不是意味着密钥不存在?
我的代码:
def findMedals(countryDict, medalDict):
search_str = input('What is the country you want information on? ')
for code, medalCount in medalDict.items():
if search_str in code:
answer.append([medalDict[medalCount]])
else:
answer = ['No Match Found']
答案 0 :(得分:0)
问题在于这一行:
answer.append([medalDict[medalCount]])
您正在使用for code, medalCount in medalDict.items():
迭代medalDict。这已将medalCount
分配给与密钥code
关联的值。你的dict没有由奖牌元组代表的钥匙。因此,当您要求medalDict[medalCount]
时,它会出错。
您可以通过以下方式解决此问题:
answer.append([medalCount])
希望这有帮助