首页 > 技术文章 > python中的容器序列类型collections

xiximayou 2020-03-04 19:29 原文

collections中的内容:

1、namedtuple():构造带字段名的元组

具名元组的特有属性:

类属性 _fields:包含这个类所有字段名的元组

类方法 _make(iterable):接受一个可迭代对象来生产这个类的实例

实例方法 _asdict():把具名元组以 collections.OrdereDict 的形式返回,可以利用它来把元组里的信息友好的展示出来

实例方法_replace():修改对象属性

一般用法:

2、deque:双端队列,相当于可以在列表的尾部和头部进行插入和删除操作,比单纯的列表insert(0,val)效果要好

append():尾部添加一个元素

appendleft():头部添加一个元素

pop():尾部弹出一个元素

popleft():头部弹出一个元素

3、ChanMap:将多个映射快速链接到一起,这样它们就可以作为一个单元处理。它通常比创建一个新字典和多次调用update()要快很多。

对ChainMap中的元素进行操作都是对第一个映射中的元素进行操作。

该容器用的不多。

4、Counter:用于计数可哈希对象,像列表、字符串等等。

5、OrderedDict

有序词典就像常规词典一样,但有一些与排序操作相关的额外功能。由于内置的dict类获得了记住插入顺序的能力(在 Python 3.7 中保证了这种新行为),它们变得不那么重要了。

一些与dict的不同仍然存在:

  • 常规的 dict被设计为非常擅长映射操作。 跟踪插入顺序是次要的。

  • OrderedDict 旨在擅长重新排序操作。 空间效率、迭代速度和更新操作的性能是次要的。

  • 算法上, OrderedDict可以比dict更好地处理频繁的重新排序操作。 这使其适用于跟踪最近的访问(例如在LRU Cache中)。

  • 对于OrderedDict ,相等操作检查匹配顺序。

  • OrderedDict 类的 popitem() 方法有不同的签名。它接受一个可选参数来指定弹出哪个元素。

  • OrderedDict 类有一个 move_to_end() 方法,可以有效地将元素移动到任一端。

  • Python 3.8之前,dict缺少__reversed__方法。

一句话总结:OrderedDict与普通的dict不同,它会记录放入元素的顺序。

5、defaultdict:存放入的数据类型会有默认值

比如:t=defaultdict(int)

字典中存放的键的数据类型为整型,其默认值为0。这个性质在遍历计数时很方便。

6、UserDict、UserList、UserString:也就是你想定义自己的Dict、List、String,你就可以继承它们并重写其中的一些方法。不常用

推荐阅读