在 3.6 之前的 Python 版本中,不保證字典中鍵的順序。在迭代字典或存取其鍵時,這可能會導致意外結果。
要理解此問題,請考慮以下程式碼:
d = {'a': 0, 'b': 1, 'c': 2} l = d.keys() print(l)
在此範例中,keys() 方法傳回字典中鍵的清單。但是,不保證列表中鍵的順序。在 Python 2.7 及更早版本中,鍵按插入順序傳回。但是,從 Python 3.0 開始,鍵以任意順序傳回。
如果您依賴字典中鍵的順序,這種不一致可能會出現問題。例如,如果您使用字典來儲存購物清單中的項目,則您可能想要按照將它們新增至字典中的順序傳回鍵。然而,在Python 3.0版本開始,這是不保證的。
要解決這個問題,有兩種選擇。第一個是使用collections.OrderedDict類別。這個類別提供了對插入順序的保證。程式碼展示如何使用OrderedDict:
from collections import OrderedDict d = OrderedDict([('a', 0), ('b', 1), ('c', 2)]) l = list(d.keys()) print(l) # ['a', 'b', 'c']
另一個選擇是使用sorted()函數對key進行升序排序。但是,這需要額外的步驟,並且可能不會總是所需的行為。
對於 Python 3.6 及更高版本,字典預設保持插入順序。但是,如果您需要跨不同 Python 實作保證插入順序,仍然建議使用 OrderedDict。
以上是為什麼舊 Python 版本中的字典鍵並不總是有序的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!