collections.OrderedDict

Python 詞典中鍵的順序是任意的:它們不受新增它們的順序的約束。

例如:

>>> d = {'foo': 5, 'bar': 6}
>>> print(d)
{'foo': 5, 'bar': 6}
>>> d['baz'] = 7
>>> print(a)
{'baz': 7, 'foo': 5, 'bar': 6}
>>> d['foobar'] = 8
>>> print(a)
{'baz': 7, 'foo': 5, 'bar': 6, 'foobar': 8}
```

(上面隱含的任意順序意味著你可以使用上面的程式碼獲得與此處所示相同的結果。)

鍵出現的順序是它們將被迭代的順序,例如使用 for 迴圈。

collections.OrderedDict 類提供保留鍵順序的字典物件。OrderedDicts 可以建立如下所示,帶有一系列有序項(這裡是元組鍵值對的列表):

>>> from collections import OrderedDict
>>> d = OrderedDict([('foo', 5), ('bar', 6)])
>>> `print(d)`
OrderedDict([('foo', 5), ('bar', 6)])
>>> d['baz'] = 7
>>> `print(d)`
OrderedDict([('foo', 5), ('bar', 6), ('baz', 7)])
>>> d['foobar'] = 8
>>> `print(d)`
OrderedDict([('foo', 5), ('bar', 6), ('baz', 7), ('foobar', 8)])

或者我們可以建立一個空的 OrderedDict 然後新增專案:

>>> o = `OrderedDict()`
>>> o['key1'] = "value1"
>>> o['key2'] = "value2"
>>> `print(o)`
OrderedDict([('key1', 'value1'), ('key2', 'value2')])

通過 OrderedDict 迭代允許按照新增的順序進行金鑰訪問。

如果我們為現有金鑰分配新值會怎樣?

>>> d['foo'] = 4
>>> `print(d)`
OrderedDict([('foo', 4), ('bar', 6), ('baz', 7), ('foobar', 8)])

鍵保留在 OrderedDict 的原始位置。