collections之OrderedDict😀
如果想让字典有序,可以使用collections.OrderedDict,它现在在C中实现,这使其快4到100倍。
##1、collections.OrderedDict的基本使用 将类OrderedDict实例化会得到一个dict子类的实例,支持通常的dict方法。
OrderedDict是记住键首次插入顺序的字典。如果新条目覆盖现有条目,则原始插入位置保持不变。
删除条目并重新插入会将其移动到末尾。
2、方法popitem(last=True)
调用有序字典的popitem()方法会删除并返回(key, value)对。如果last为真,则以LIFO(后进先出)顺序返回这些键值对,如果为假,则以FIFO(先进先出)顺序返回。
3、方法move_to_end(key, last=True)
该方法用于将一个已存在的key移动到有序字典的任一端。如果last为True(默认值),则移动到末尾,如果last为False,则移动到开头。如果key不存在,引发KeyError
4、OrderDict对象之间的相等性判断
OrderedDict对象之间的相等性判断是顺序敏感的
OrderedDict对象与其他映射对象之间的相等性测试与常规字典类似,对顺序不敏感,所以我们可以在使用常规字典的任何位置替换为OrderedDict对象,并不会影响使用。
5、OrderedDict构造函数和update()
OrderedDict构造函数和update()方法都可以接受关键字参数,但是它们的顺序丢失,因为OrderedDict构造函数和update()方法都属于Python的函数调用,而Python的函数调用语义使用常规无序字典传递关键字参数。请在python2中测试
6、OrderedDict与sort结合
由于有序字典会记住其插入顺序,因此可以与排序结合使用以创建排序字典:
7、自定义OrderDict变体
我们通过继承OrderDict类来实现在原有的基础之上上定制化我们的子类(即OrderDict变体)。
比如我们在用新条目覆盖现有条目时,我们不想像OrderDict原先那样保留原始的插入位置,而是将覆盖的条目移动到结尾,实现如下
##8、OrderDict与collections.Counter结合
有序字典可以与Counter类结合,以便计数器记住首次遇到的顺序元素: