Dalam versi Python sebelum 3.6, susunan kunci dalam kamus tidak dijamin. Ini boleh membawa kepada hasil yang tidak dijangka apabila melelakan kamus atau mengakses kekuncinya.
Untuk memahami isu tersebut, pertimbangkan kod berikut:
d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print(l)
Dalam contoh ini, kaedah keys() mengembalikan senarai kunci dalam kamus. Walau bagaimanapun, susunan kekunci dalam senarai tidak dijamin. Dalam Python versi 2.7 dan lebih awal, kunci telah dikembalikan dalam susunan sisipan. Walau bagaimanapun, dalam Python 3.0 dan seterusnya, kunci dikembalikan dalam susunan sewenang-wenangnya.
Ketidakkonsistenan ini boleh menjadi masalah jika anda bergantung pada susunan kekunci dalam kamus. Contohnya, jika anda menggunakan kamus untuk menyimpan item dalam senarai runcit, anda mungkin menjangkakan kunci akan dikembalikan mengikut susunan yang anda tambahkan pada kamus. Walau bagaimanapun, dalam Python versi 3.0 dan seterusnya, ini tidak dijamin.
Kepada 解决这个问题,有两种选择。第一个是使用 koleksi.OrderedDict类。这个类提供了对插入顺序的保证。以下代码展示了如何使用OrderedDict:
from collections import OrderedDict d = OrderedDict([('a', 0), ('b', 1), ('c', 2)]) l = list(d.keys()) print(l) # ['a', 'b', 'c']
另一个选择是使用 sorted() berfungsi untuk mengisih kekunci dalam tertib menaik. Walau bagaimanapun, ini memerlukan langkah tambahan dan mungkin tidak selalu menjadi tingkah laku yang diingini.
Untuk versi Python 3.6 dan lebih baharu, kamus secara lalai mengekalkan susunan sisipan. Walau bagaimanapun, masih disyorkan untuk menggunakan OrderedDict jika anda memerlukan susunan sisipan yang terjamin merentas pelaksanaan Python yang berbeza.
Atas ialah kandungan terperinci Mengapa Kunci Kamus dalam Versi Python Lama Tidak Sentiasa Dipesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!