Dari Python 3.6 dan seterusnya, standar dict
tipe mempertahankan urutan penyisipan secara default.
Mendefinisikan
d = {'ac':33, 'gw':20, 'ap':102, 'za':321, 'bs':10}
akan menghasilkan kamus dengan kunci dalam urutan yang tercantum dalam kode sumber.
Ini dicapai dengan menggunakan array sederhana dengan bilangan bulat untuk tabel hash jarang, di mana bilangan bulat indeks ke array lain yang menyimpan pasangan nilai kunci (ditambah hash yang dihitung). Array yang terakhir hanya terjadi untuk menyimpan item dalam urutan penyisipan, dan seluruh kombinasi sebenarnya menggunakan lebih sedikit memori daripada implementasi yang digunakan dalam Python 3.5 dan sebelumnya. Lihat posting ide asli oleh Raymond Hettinger untuk detailnya.
Dalam 3.6 ini masih dianggap sebagai detail implementasi; lihat dokumentasi What's New in Python 3.6 :
Aspek pelestarian pesanan dari implementasi baru ini dianggap sebagai detail implementasi dan tidak boleh diandalkan (ini dapat berubah di masa depan, tetapi diharapkan memiliki implementasi dict baru ini dalam bahasa untuk beberapa rilis sebelum mengubah spesifikasi bahasa untuk mengamanatkan semantik pengawet pesanan untuk semua implementasi Python saat ini dan di masa depan, ini juga membantu menjaga kompatibilitas ke belakang dengan versi bahasa yang lebih lama di mana urutan iterasi acak masih berlaku, misalnya Python 3.5).
Python 3.7 meninggikan detail implementasi ini ke spesifikasi bahasa , jadi sekarang wajib yang dict
menjaga ketertiban di semua implementasi Python yang kompatibel dengan versi itu atau yang lebih baru. Lihat pernyataan oleh BDFL .
Anda mungkin masih ingin menggunakan collections.OrderedDict()
kelas dalam kasus-kasus tertentu, karena ia menawarkan beberapa fungsionalitas tambahan di atas dict
tipe standar . Seperti menjadi reversibel (ini meluas ke objek tampilan ), dan mendukung pemesanan ulang (melalui move_to_end()
metode ).