Güncelleme: Python 3.7'den itibaren ekleme talimatı korunur, bu yüzden OrderedDict
burada ihtiyacınız yoktur . Aşağıdaki yaklaşımları normaldict
Sürüm 3.7'de değiştirildi: Sözlük siparişinin kampanya siparişi olması garanti edilir. Bu davranış, 3.6'dan CPython'un bir uygulama ayrıntısıydı.
kaynak
Python 3.6 ve öncesi *
Eğer bir düzenli hakkında konuşuyorsanız dict
, "ilk anahtar" hiçbir şey ifade etmez. Anahtarlar, güvenebileceğiniz herhangi bir şekilde sıralanmamıştır. Eğer sizin için yinelerseniz dict
, muhtemelen "banana"
ilk gördüğünüz şey olarak alamazsınız.
İşleri düzenli tutmanız gerekiyorsa, OrderedDict
yalnızca düz bir sözlük değil , bir de kullanmanız gerekir .
import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
Daha sonra tüm anahtarları sırayla görmek isterseniz, yineleyerek
for k in prices:
print(k)
Alternatif olarak, tüm anahtarları bir listeye koyabilir ve daha sonra bununla çalışabilirsiniz.
ks = list(prices)
print(ks[0]) # will print "banana"
Liste oluşturmadan ilk öğeyi almanın daha hızlı bir yolu next
, yineleyiciyi çağırmak olacaktır . Bu, nth
öğeyi almaya çalışırken iyi bir şekilde genelleşmiyor
>>> next(iter(prices))
'banana'
* CPython, 3.6'da uygulama ayrıntısı olarak ekleme talimatını garanti etmişti.