Akankah OrderedDict menjadi redundan di Python 3.7?


90

Dari log perubahan Python 3.7 :

sifat pelestarian urutan penyisipan dari objek dict telah dinyatakan sebagai bagian resmi dari spesifikasi bahasa Python.

Apakah ini berarti itu OrderedDictakan menjadi mubazir? Satu-satunya kegunaan yang dapat saya pikirkan adalah untuk menjaga kompatibilitas mundur dengan versi Python yang lebih lama yang tidak mempertahankan urutan penyisipan untuk kamus normal.


Jawaban:


132

Tidak, itu tidak akan menjadi mubazir di Python 3.7 karena OrderedDictbukan hanya dictmempertahankan urutan penyisipan, itu juga menawarkan metode tergantung pesanan OrderedDict.move_to_end(), dan mendukung reversed()iterasi *.

Selain itu, perbandingan kesetaraan dengan OrderedDictsensitif urutan dan ini masih tidak berlaku untuk dictPython 3.7, misalnya:

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

Dua pertanyaan relevan di sini dan di sini .

* Dukungan untuk reversed()iterasi Python biasa dictditambahkan untuk Python 3.8, lihat issue33462


Poin tentang sensitivitas pesanan saat membandingkan sangat valid di sini.
Tim Skov Jacobsen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.