Ich bin neu bei Python und lerne gerade über Wörterbücher. Ich habe zufällige Werte und Typen in ein Wörterbuch eingegeben. Hier ist, was ich ist verwirrend:Boolesch als Schlüssel im Wörterbuch verursacht seltsame Probleme?
stuff = {True: 1234, 1: 2}
print(stuff[True])
print(len(stuff))
Wenn Sie dieses Stück Code ausführen, der Ausgang ist:
2
1
Wie ist dies der Ausgang? Sollte keine Ausgabe 1234
und print(len(stuff))
Ausgabe 2
sein? Ich vermisse etwas wirklich Offensichtliches, aber kann jemand bitte erklären, was vor sich geht?
'wahre == 1 '; 'bool' ist ein Subtyp von' int'. – Ryan
@Ryan so interpretiert Python tatsächlich '{True: 1234, 1: 2}' als '{1: 1234, 1: 2}'? Ich denke, das erklärt das 'len' Problem. Aber warum wählt es "2" anstelle von "1234", besonders weil "1234" zuerst kommt? – parrot15
Wenn Sie mehrere gleiche Schlüssel haben, ist der letzte der Schlüssel, dessen Wert verwendet wird. Und Sie können es sich als '{1: 1234, 1: 2}' vorstellen, aber es ist nicht * wirklich * das; "True" und "1" sind verschieden, vergleichen sich aber mit '==', und die Wörter der Wörterbücher werden basierend auf dieser Gleichheit verglichen. * – Ryan