Heim > Artikel > Backend-Entwicklung > Warum sind Wörterbuchschlüssel in älteren Python-Versionen nicht immer geordnet?
In Python-Versionen vor 3.6 war die Reihenfolge der Schlüssel in Wörterbüchern nicht garantiert. Dies könnte zu unerwarteten Ergebnissen führen, wenn ein Wörterbuch durchlaufen oder auf dessen Schlüssel zugegriffen wird.
Um das Problem zu verstehen, betrachten Sie den folgenden Code:
d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print(l)
In diesem Beispiel die Methode „keys()“. gibt eine Liste der Schlüssel im Wörterbuch zurück. Die Reihenfolge der Schlüssel in der Liste ist jedoch nicht garantiert. In Python-Versionen 2.7 und früher wurden die Schlüssel in der Einfügereihenfolge zurückgegeben. Ab Python 3.0 wurden die Schlüssel jedoch in willkürlicher Reihenfolge zurückgegeben.
Diese Inkonsistenz kann problematisch sein, wenn Sie sich auf die Reihenfolge der Schlüssel in einem Wörterbuch verlassen. Wenn Sie beispielsweise ein Wörterbuch verwenden, um die Elemente einer Einkaufsliste zu speichern, können Sie davon ausgehen, dass die Schlüssel in der Reihenfolge zurückgegeben werden, in der Sie sie dem Wörterbuch hinzugefügt haben. In Python-Versionen ab 3.0 ist dies jedoch nicht garantiert顺序的保证.以下代码展示了如何使用 OrderedDict:
另一个选择是使用 sorted()-Funktion zum Sortieren der Schlüssel in aufsteigender Reihenfolge. Dies erfordert jedoch einen zusätzlichen Schritt und ist möglicherweise nicht immer das gewünschte Verhalten.from collections import OrderedDict d = OrderedDict([('a', 0), ('b', 1), ('c', 2)]) l = list(d.keys()) print(l) # ['a', 'b', 'c']
Für Python-Versionen 3.6 und höher behalten Wörterbücher standardmäßig die Einfügereihenfolge bei. Es wird jedoch weiterhin empfohlen, OrderedDict zu verwenden, wenn Sie eine garantierte Einfügereihenfolge über verschiedene Python-Implementierungen hinweg benötigen.
Das obige ist der detaillierte Inhalt vonWarum sind Wörterbuchschlüssel in älteren Python-Versionen nicht immer geordnet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!