OrderedDict Python 3.7'de gereksiz hale gelecek mi?


92

Gönderen Python 3.7 değişmek :

dikte nesnelerinin ekleme sırası koruma doğası , Python dil spesifikasyonunun resmi bir parçası olarak ilan edildi .

Bu OrderedDict, gereksiz hale geleceği anlamına mı gelir? Aklıma gelen tek kullanım, normal sözlükler için ekleme sırasını korumayan eski Python sürümleriyle geriye dönük uyumluluğu korumak olacaktır.


Yanıtlar:


137

Hayır, Python 3.7'de fazlalık olmayacak çünkü OrderedDictsadece dictekleme sırasını tutan bir şey değil , aynı zamanda siparişe bağlı bir yöntem sunuyor OrderedDict.move_to_end()ve reversed()yinelemeyi * destekliyor .

Dahası, ile eşitlik karşılaştırmaları OrderedDictsıraya duyarlıdır ve bu durum dictPython 3.7'de hala geçerli değildir, örneğin:

>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
True

Burada ve burada iki alakalı soru .

* Python 3.8 için reversed()normal Python yineleme desteği dicteklendi, bkz. İssue33462


1
Karşılaştırma yaparken sipariş hassasiyeti ile ilgili nokta burada çok geçerlidir.
Tim Skov Jacobsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.