0

だから私はこれらの値を持つこのファイルを持っています:

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']
4

1 に答える 1

0

問題は次の行にあります。

answer.append([medalDict[medalCount]])

を使用して、medalDict を反復処理していfor code, medalCount in medalDict.items():ます。medalCountこれは、キーに関連付けられた値にすでに割り当てられていますcode。あなたの辞書には、メダルのタプルで表されるキーがありません。そのため、 を求めるとエラーになりますmedalDict[medalCount]

これは次の方法で修正できます。

answer.append([medalCount])

お役に立てれば

于 2013-07-19T02:59:41.297 に答える