Güncelleme: Python 3.7'den itibaren ekleme talimatı korunur, bu yüzden OrderedDictburada 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, OrderedDictyalnı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.