2016-04-06 1 views
0

定数(値は変数と同じ)を使用するとKeyErrorが返されません[キー]。例えば[dictionary] .pop([key])の[key]として変数を使用すると、KeyErrorが発生し続ける

:self._answer = 1001

self._answer= input("Which appointment would you like to delete?") 
self._useless= self._book.pop(self._answer) 

しかし、キーエラーを与える:所望のよう

self._useless= self._book.pop(1001)

作品。どのように私はこの問題を解決することができます任意のアイデア?

編集:@ user2357112は以下示唆したように、次のコードは、働いていない:def deleteAppointment(self): self._answer= int(input("Which appointment would you like to delete?")) del self._book[self._answer]しかし

は、プロジェクト全体をやり直した後、私はもはや(すなわち使用して、[辞書] .pop上記のような問題に遭遇しました( [key])はもはやKeyErrorを生成しませんでした)。 したがって、このエラーが発生した場合は、コードにバグが存在する可能性があります。

+0

は、キーの整数です1001または文字列 "1001"? – timrau

+0

@Rogalskiはい辞書self._bookからキーを削除しようとしています。 –

+0

@timrau整数です –

答えて

2

input(Python 3)は文字列を返し、'1001' != 1001です。あなたの鍵がint 1001ある場合は、intに入力を変換する必要があります:余談として

self._answer= int(input("Which appointment would you like to delete?")) 

、名前​​はあなたがpop操作の結果を気にしないかもしれないことを示しています。あなただけのdictからエントリを削除したい場合は、delを使用することができます。

del self._book[self._answer] 

またはあなたがpopの戻り値を無視して、何にそれを割り当てることができませんでした:

self._book.pop(self._answer) 
+0

ありがとうございましたuser2357112、delを使った2番目の提案が働きました。補足として、あなたの最初の提案は私のためには機能しませんでした:私はそれを試したときにエラーはありませんでしたが、1001はまだ辞書にありました。 –

+0

@AshutoshMishra:あなたはどこかでバグが増えているように思えます。 – user2357112