Python: Ist es sinnvoll, None als Wörterbuchschlüssel zu verwenden?

Keiner scheint zu funktionieren wie ein Wörterbuch Schlüssel, aber ich Frage mich ob, das wird nur zu Problemen führen später. Zum Beispiel, das funktioniert:

>>> x={'a':1, 'b':2, None:3}
>>> x
{'a': 1, None: 3, 'b': 2}
>>> x[None]
3

Den tatsächlichen Daten ich arbeite mit Bildungsstandards. Jeder standard ist verbunden mit einem content-Bereich. Einige standards sind auch im Zusammenhang mit dem Inhalt Teilbereichen. Ich würde gerne eine verschachtelte Wörterbuch der form {contentArea:{contentSubArea:[standards]}}. Einige dieser contentSubArea Schlüssel wäre Keine.

Insbesondere Frage ich mich, ob dies wird zu Verwirrung führen, wenn ich einen Schlüssel, der nicht existiert, irgendwann, oder so unerwarteten wie.

Kommentar zu dem Problem
Was hat Sie Probleme, ist mit NaN als ein Schlüssel. Es ist trügerisch, denn es ist hashable, aber nicht zu vergleichen, gleich selbst. Das ist: float('nan') == float('nan') gibt False, wie es sollte, auf zwei Python-Implementierungen, die ich ausprobiert habe. Wenn Sie es verwenden, wie ein Schlüssel in einem Wörterbuch, es nicht zu erhöhen eine Ausnahme, und verwenden Sie es als ein index funktioniert, wenn, und nur wenn es das gleiche ist NaN - Objekt (hat den gleichen id(..)), obwohl dieser möglicherweise von der Implementierung abhängig sein. So könnte es funktionieren wie erwartet, für eine Weile und dann fail. Keines dieser Probleme Einfluss auf None, auch nur, weil es gibt nur ein None. Kommentarautor: Evgeni Sergeev

InformationsquelleAutor der Frage japhyr | 2011-08-11

Schreibe einen Kommentar