Aktualizacja: od wersji Python 3.7 kolejność wstawiania jest zachowana, więc nie potrzebujesz OrderedDict
tutaj. Możesz użyć poniższych podejść z normalnymdict
Zmieniono w wersji 3.7: kolejność wstawiania słownika jest gwarantowana. To zachowanie było szczegółową implementacją CPython z 3.6.
źródło
Python 3.6 i wcześniejsze *
Jeśli mówisz o zwykłym dict
, to „pierwszy klucz” nic nie znaczy. Klucze nie są zamawiane w żaden sposób, na którym można polegać. Jeśli wykonasz iterację dict
, prawdopodobnie nie dostaniesz "banana"
pierwszej rzeczy, którą zobaczysz.
Jeśli chcesz zachować porządek, musisz użyć OrderedDict
zwykłego słownika.
import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
Jeśli następnie chciałbyś zobaczyć wszystkie klucze w porządku, możesz to zrobić poprzez iterację
for k in prices:
print(k)
Możesz alternatywnie umieścić wszystkie klucze na liście, a następnie pracować z tym
ks = list(prices)
print(ks[0]) # will print "banana"
Szybszym sposobem na uzyskanie pierwszego elementu bez tworzenia listy byłoby wywołanie next
iteratora. To jednak nie uogólnia się przy próbie uzyskania nth
elementu
>>> next(iter(prices))
'banana'
* CPython miał gwarantowaną kolejność wstawiania jako szczegół implementacji w 3.6.