python中的容器序列类型collections
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,你就可以继承它们并重写其中的一些方法。不常用