热门IT资讯网

5. python Collections -- OrdereDict

发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,有序字典就像普通字典一样,但他们记住了项目插入的顺序。 在迭代有序字典时,将按照首次添加键的顺序返回项目。用法:class collections.OrderedDict([items])返回一个字典

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

用法:

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类组合使用,以便计数器记住第一次遇到的顺序元素:


0