Ich möchte ein Vorhandensein eines Schlüssels in einem Wörterbuch als "wenn Schlüssel nicht im Wörterbuch ist: etwas tun" testen Ich habe das schon mehrmals gemacht, aber dieses Mal verhält es sich merkwürdig.
besonders:
%Vor%gibt KeyError
zurückWenn ich diesen Code in Eclipse PyDev debuggte, bekam ich Folgendes (mit Ausdrücken):
%Vor%Versteht jemand, wie das möglich ist? Ich dachte, wenn etwas in der Schlüsselmenge ist, dann ist es im Wörterbuch.
Ich füge einen Screenshot der Auswertung bei.
Vielen Dank für die Erklärung:)
Dieses Verhalten tritt möglicherweise auf, wenn die __hash__
-Funktion Ihres Schlüssels nicht richtig definiert ist. Zum Beispiel ergibt das Folgende ungefähr das gleiche Verhalten wie beschrieben:
In diesem Fall erzeuge ich zufällige Hash-Werte, was offensichtlich eine schlechte Idee ist. Ein weniger offensichtliches Problem, das den gleichen Effekt hätte, könnte sein, dass Ihre Schlüsselwerte änderbar sind. (Im Allgemeinen sollten veränderbare Werte niemals __hash__
definieren und sollten nicht als Schlüssel in Wörterbüchern verwendet werden können.)
Tags und Links python python-2.7