Python 3.6'dan itibaren, standart dict
tip varsayılan olarak ekleme sırasını korur.
tanımlanması
d = {'ac':33, 'gw':20, 'ap':102, 'za':321, 'bs':10}
anahtarlar kaynak kodunda listelenen sırada bir sözlükle sonuçlanır.
Bu, seyrek karma tablosu için tamsayılarla basit bir dizi kullanılarak başarıldı; burada bu tamsayılar, anahtar / değer çiftlerini (artı hesaplanan karma) depolayan başka bir diziye endeksler. Bu son dizi, öğeleri ekleme sırasında saklar ve tüm kombinasyon aslında Python 3.5 ve öncesinde kullanılan uygulamadan daha az bellek kullanır. Ayrıntılar için Raymond Hettinger'ın orijinal fikir gönderisine bakın.
3.6'da bu hala bir uygulama detayı olarak görülüyordu; bkz Python 3.6 Neler Yeni belgelerinde :
Bu yeni uygulamanın siparişi koruyan yönü bir uygulama detayı olarak kabul edilir ve buna güvenilmemelidir (bu gelecekte değişebilir, ancak dil spesifikasyonunu değiştirmeden önce bu yeni dict uygulamasının birkaç sürüm için dilde olması arzu edilir. mevcut ve gelecekteki tüm Python uygulamaları için siparişi koruyan semantikleri zorunlu kılmak için; bu aynı zamanda rastgele yineleme sırasının hala geçerli olduğu dilin eski sürümleriyle geriye dönük uyumluluğu korumaya yardımcı olur, örneğin Python 3.5).
Python 3.7, bu uygulama detayını bir dil spesifikasyonuna yükseltir , bu nedenle dict
bu sürümle veya daha yeni bir sürümle uyumlu tüm Python uygulamalarında düzeni korumak artık zorunludur . Bkz BDFL tarafından açıklanmasının geri .
collections.OrderedDict()
Sınıfı , standart dict
türün üstünde bazı ek işlevler sunduğundan, bazı durumlarda yine de kullanmak isteyebilirsiniz . Tersinir olma ( görünüm nesnelerine uzanır ) ve yeniden sıralamayı destekleme ( move_to_end()
yöntemle ) gibi.