5. python Collections -- OrdereDict

外语不好,机翻勿喷,方便回顾 (逃~


有序字典就像普通字典一样,但他们记得插入项目的顺序。 在迭代有序字典时,将按照首次添加密钥的顺序返回项目。

用法:

    class collections.OrderedDict([items])

返回一个字典子类的实例,支持通常的字典方法。

OrderedDict是一个字典,它记住了键被首次插入的顺序。

如果新条目覆盖现有条目,则原始插入位置保持不变。

删除一个条目并重新插入它将会把它移到最后。


popitem(last=True)

有序字典的popitem()方法返回并删除(key, value)对。

如果 last 是 True 或者如果 FIFO(先进先出) 的顺序为false,则按LIFO(后进先出)顺序返回键值对。



move_to_end(keylast=True)

将现有密钥移至有序字典的任意一端。 如果last为True(默认),则项目移动到右侧,如果last为false,则移动到开头。 

如果密钥不存在,则引发KeyError:

image.png


除了通常的映射方法外,有序字典还支持reverse()方法进行反向迭代。

OrderedDict对象之间的相等测试是对顺序敏感的,并且以列表(od1.items())== list(od2.items())的形式实现。

OrderedDict对象与其他映射对象之间的相等测试与常规字典一样对顺序不敏感。

这允许OrderedDict对象在使用常规字典的任何地方被替换。

版本3.5中更改:OrderedDict的项目,键和值视图现在支持使用reverse()的反向迭代

在版本3.6中更改:随着PEP 468的接受,保留传递给OrderedDict构造函数和update()方法的关键字参数的顺序。



OrderedDict Examples and Recipes(OrderedDict示例和食谱)

由于有序字典会记住它的插入顺序,因此它可以与排序结合使用以创建一个排序后的字典:

image.png


删除条目时,新排序的字典会保持排序顺序。 但是,当添加新的密钥时,密钥被追加到最后,并且不保持排序。

创建一个有序的字典变体也是直接的,可以记住键最后插入的顺序。 

如果新条目覆盖现有条目,则会更改原始插入位置并移至最后:

image.png

有序字典可以与Counter类组合使用,以便计数器记住第一次遇到的顺序元素:

image.png


猜你喜欢

转载自blog.51cto.com/286577399/2128652