python 2.7 Präsenz in einem Wörterbuch

8

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ück

Wenn 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:)

    
jlanik 24.04.2013, 18:59
quelle

1 Antwort

11

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:

%Vor%

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.)

    
Edward Loper 24.04.2013, 19:20
quelle

Tags und Links