Code:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
Dies wird gedruckt ['a', 'c', 'b']
. Ich bin mir nicht sicher, wie die Methode keys()
die Reihenfolge der Schlüsselwörter innerhalb von l bestimmt . Ich möchte jedoch in der Lage sein, die Schlüsselwörter in der "richtigen" Reihenfolge abzurufen. Die richtige Reihenfolge würde natürlich die Liste erstellen ['a', 'b', 'c']
.
python
dictionary
Rechteck
quelle
quelle
Antworten:
Sie können OrderedDict (erfordert Python 2.7) oder höher verwenden.
Beachten Sie auch, dass dies
OrderedDict({'a': 1, 'b':2, 'c':3})
nicht funktioniert, da dasdict
, mit dem Sie erstellen,{...}
die Reihenfolge der Elemente bereits vergessen hat. Stattdessen möchten Sie verwendenOrderedDict([('a', 1), ('b', 2), ('c', 3)])
.Wie in der Dokumentation erwähnt, können Sie dieses Rezept für Versionen unter Python 2.7 verwenden .
quelle
Python 3.7+
In Python 3.7.0 wurde die Beibehaltung der Einfügungsreihenfolge von
dict
Objekten als offizieller Bestandteil der Python-Sprachspezifikation deklariert . Daher können Sie sich darauf verlassen.Python 3.6 (CPython)
Ab Python 3.6 behalten Wörterbücher für die CPython-Implementierung von Python standardmäßig die Einfügereihenfolge bei. Dies wird jedoch als Implementierungsdetail angesehen. Sie sollten es weiterhin verwenden,
collections.OrderedDict
wenn Sie eine Einfügereihenfolge wünschen, die für andere Implementierungen von Python garantiert ist.Python> = 2.7 und <3.6
Verwenden Sie die
collections.OrderedDict
Klasse, wenn Sie eine benötigendict
, die sich an die Reihenfolge der eingefügten Elemente erinnert.quelle
Verwenden Sie die sortierte Funktion , mit der die übergebene Iteration sortiert wird .
Die
.keys()
Methode gibt die Schlüssel in einer beliebigen Reihenfolge zurück.quelle
Sortieren Sie einfach die Liste, wenn Sie sie verwenden möchten.
quelle
Von http://docs.python.org/tutorial/datastructures.html :
"Die Methode keys () eines Wörterbuchobjekts gibt eine Liste aller im Wörterbuch verwendeten Schlüssel in beliebiger Reihenfolge zurück (wenn Sie möchten, dass es sortiert wird, wenden Sie einfach die Funktion sorted () darauf an)."
quelle
Obwohl die Reihenfolge keine Rolle spielt, da das Wörterbuch eine Hashmap ist. Es hängt von der Reihenfolge ab, in der es eingeschoben wird:
Ausgabe:
Für den String abbc sind die Schlüssel dict_keys (['a', 'b', 'c'])
für den String cbab, die Schlüssel sind dict_keys (['c', 'b', 'a']).
quelle