2016-04-18 4 views
1

habe ich diesen Code in Python laufen:Python hinzufügen Element mit Schlüssel gleich 8

squares = {1:1,2:3,3:"error",4:16,} 
squares[3]=9 
squares[8] =64 
print(squares) 

Das Ergebnis was ich habe ist:

{8: 64, 1: 1, 2: 3, 3: 9, 4: 16} 

Als ich die 8 durch zu ersetzen versucht, für Beispiel 5 wie der folgende Code zeigt:

squares = {1:1,2:3,3:"error",4:16,} 
squares[3]=9 
squares[5] =64 
print(squares) 

ich habe folgendes Ergebnis:

Kann jemand erklären, warum das Element im ersten Codeabschnitt am Anfang hinzugefügt wurde, während es am Ende des Wörterbuchs hinzugefügt wurde?

+1

Wörterbuch sind nicht bestellt! – Clodion

Antwort

1

Wörterbuch ist nicht bestellt. Die Reihenfolge der Elemente spielt keine Rolle.

1

Es ist sehr wichtig, das lesen docs zuerst:

Am besten ist es ein Wörterbuch zu denken, als ungeordnete Satz von Schlüssel: Wert Paare, mit der Forderung, dass die Schlüssel eindeutig sind (in einem Wörterbuch).

So ist es sinnlos, zwischen Anfang und Ende zu unterscheiden.

1

Wie vorherige Antworten darauf hingewiesen haben, sind die Elemente eines Wörterbuchs ungeordnet. Wenn Sie den Inhalt des ‚Quadrat‘ Wörterbuch mit dem Schlüssel bestellt drucken möchten, können Sie tun:

print(sorted(squares)) 

Dadurch wird der Inhalt des Wörterbuchs als (Schlüssel, Wert) -Paare, sortiert nach Taste drucken:

[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (8, 64)] 
1

Die Elemente eines Wörterbuchs werden in einer deterministischen Reihenfolge angezeigt. Im Gegensatz zu dem, was man erwarten könnte, sind sie jedoch nicht in lexikografischer Reihenfolge angeordnet.

können Sie die Methode verwenden dict.items() und die eingebaute in funtion sorted() mit dem Inhalt eines Wörterbuchs angezeigt werden entweder die Tasten oder die lexikographisch geordnet Werte:

>>> somedict = {7:'a', 6:'c', 8:'b'} 
>>> print(somedict) 
{8: 'b', 6: 'c', 7: 'a'} 
>>> print(sorted(somedict.items())) 
[(6, 'a'), (7, 'c'), (8, 'b')] 
>>> print(sorted(somedict.items(), key=lambda x: x[1])) 
[(7, 'a'), (8, 'b'), (6, 'c')] 
0

Dies hat mich auch zu Fall zu bringen, wie ein Anfänger. Im Gegensatz zu Listen sind Wörterbücher nicht geordnet. Mit anderen Worten, Sie können nicht von der Reihenfolge abhängig sein, in der die Schlüssel/Wert-Paare angezeigt werden, wenn Sie den Inhalt eines Wörterbuchs drucken. Wenn Sie sie wirklich bestellen müssen, können Sie collections.OrderedDict verwenden.

Verwandte Themen