有序字典就像普通字典一样,但他们记住了项目插入的顺序。 在迭代有序字典时,将按照首次添加键的顺序返回项目。
用法:
class collections.OrderedDict([items])
返回一个字典子类的实例,支持通常的字典方法。
OrderedDict是一个字典,它记住了键被首次插入的顺序。
如果新条目覆盖现有条目,则原始插入位置保持不变。
删除一个条目并重新插入它将会把它移到最后。
popitem(last=True)
有序字典的popitem()方法返回并删除(key, value)对。
如果 last 是 True 或者如果 FIFO(先进先出) 的顺序为false,则按LIFO(后进先出)顺序返回键值对。
如果last是True,则以LIFO[后进先出]的顺序返回,如果为Flase,则以FIFO[先进先出]顺序返回。
move_to_end(key, last=True)
将现有键移至有序字典的任意一端。 如果last为True(默认值),则项目移动到右侧,如果last为false,则移动到开头。
如果key不存在,则引发KeyError:
除了通常的映射方法外,有序字典还支持reverse()方法进行反向迭代。
OrderedDict对象之间的等式测试是顺序敏感的,并且以 list(od1.items()) == list(od2.items()) 的形式实现。
OrderedDict对象与其他映射(Mapping)对象之间的等式测试对常规字典对顺序不敏感。
这允许在使用常规字典的任何地方替换OrderedDict对象。
版本3.5中更改:OrderedDict的项目,键和值视图现在支持使用reversed()进行反向迭代。
在版本3.6中更改:随着PEP 468的接受,保留传递给OrderedDict构造函数和update()方法的关键字参数的顺序。
OrderedDict Examples and Recipes(OrderedDict示例和食谱)
由于有序字典会记住它的插入顺序,因此它可以与排序结合使用以创建一个排序后的字典:
删除条目时,新排序的字典会保持其排序顺序。 但是,当添加新的密钥时,密钥被追加到最后,并且不会保留排序。
创建一个有序的字典变体也很简单,可以记住上一次插入秘钥的顺序。如果新条目覆盖现有条目,则会更改原始插入位置并移至结尾:
有序字典可以与Counter类组合使用,以便计数器记住第一次遇到的顺序元素: