Ok.
Nachdem ich den Beitrag lass, habe ich mal noch ein wenig rumgespielt ...
Code: Alles auswählen
d_parities = {"none" : "PARITY_NONE",
"even" : "PARITY_EVEN",
"space" : "PARITY_SPACE",
"mark" : "PARITY_MARK",
"odd" : "PARITY_ODD",
"key1" : "key1",
"key2": "key3"}
par = "noane"
par2 = "key2"
print d_parities.__class__
print d_parities
if par2 in d_parities:
print par2, "gefunden (ohne keys())"
else:
print par2, "nicht gefunden (ohne keys())"
print "----------------------"
print d_parities.keys().__class__
print d_parities.keys()
if par2 in d_parities.keys():
print par2, "gefunden (mit keys())"
else:
print par2, "nicht gefunden (mit keys())"
ergibt:
Code: Alles auswählen
<type 'dict'>
{'even': 'PARITY_EVEN', 'none': 'PARITY_NONE', 'space': 'PARITY_SPACE', 'key2': 'key3', 'key1': 'key1', 'mark': 'PARITY_MARK', 'odd': 'PARITY_ODD'}
key3 nicht gefunden (ohne keys())
----------------------
<type 'list'>
['even', 'none', 'space', 'key2', 'key1', 'mark', 'odd']
key3 nicht gefunden (mit keys())
Das bedeutet also, dass ich mit keys() ein Abgleich auf eine Liste
(aus allen Keys des dicts) mache und ohne keys() ein Abgleich auf das komplette dict.
Nun haette ich erwartet, dass ich (bzw. Python) ohne .keys() dann auch die Werte der keys abfragt.
Das ist aber nicht der Fall.
Des weiteren fiel mir auf, dass sich die Reihenfolge der keys aendert.
Nicht das das interessieren wuerde, da das ja bei einem dict egal ist.
Komisch finde ich das dennoch, da ich da kein System hinter sehe.
(weder nach Zeichenlaenge des keys/value oder der Buchstabenposition im Alphabet)
Ja ... das "d_" am Anfang stand fuer mich als Hinweis auf ein Dictionary.
Wie kann ich es denn "ueblich" als dict kennzeichnen?
Oder sollte ich das im Namen generell unterlassen und lieber ein comment mit dem Hinweis darauf einfuegen?
Denn spaetestens nach 60 "Variablen" weiss ich nicht mehr, was fuer ein Typ die einzelnen haben.
Happy hacking!