Update: Ab Python 3.7 wird die Einfügereihenfolge beibehalten, sodass Sie hier keine benötigen OrderedDict. Sie können die folgenden Ansätze mit einem normalen verwendendict
In Version 3.7 geändert: Die Wörterbuchreihenfolge ist garantiert die Einfügereihenfolge. Dieses Verhalten war ein Implementierungsdetail von CPython aus Version 3.6.
Quelle
Python 3.6 und früher *
Wenn Sie von einem Stammkunden sprechen dict, bedeutet der "erste Schlüssel" nichts. Die Schlüssel werden in keiner Weise bestellt, auf die Sie sich verlassen können. Wenn Sie über Ihre iterieren, werden dictSie wahrscheinlich nicht "banana"als erstes sehen.
Wenn Sie die Dinge in Ordnung halten möchten, müssen Sie ein OrderedDictund nicht nur ein einfaches Wörterbuch verwenden.
import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
Wenn Sie dann alle Schlüssel der Reihe nach anzeigen möchten , können Sie dies tun, indem Sie sie durchlaufen
for k in prices:
print(k)
Sie können alternativ alle Schlüssel in eine Liste einfügen und dann damit arbeiten
ks = list(prices)
print(ks[0]) # will print "banana"
Ein schnellerer Weg, um das erste Element zu erhalten, ohne eine Liste zu erstellen, besteht darin, nextden Iterator aufzurufen . Dies lässt sich jedoch nicht gut verallgemeinern, wenn versucht wird, das nthElement abzurufen
>>> next(iter(prices))
'banana'
* CPython hatte die Einfügereihenfolge als Implementierungsdetail in 3.6 garantiert.