python的collections类

一、Counter的使用

1、统计相关元素出现的次数,可以用Counter

python的collections类_第1张图片

2、elements()方法获取Counter()生成对象的所有键名,重复的几个会全部打印,返回一个iterator(迭代器)。most_common(n)返回一个list, list中包含Counter对象中出现最多前n个元素。

python的collections类_第2张图片

二、defaultdict的使用

该类型除了在处理不存在的键的操作之外与普通的字典完全相同。defaultdict在字典dict的基础之上添加一个参数default_factory(default_factory可以指定为list,set,int)

1、将下面的list转换成一个dict,其中key对应的value是一个list

python的collections类_第3张图片

2、1中value中包含重复元素,如果我们不想要value中的元素重复,可以用defaultdict(set)来解决这个问题,set与list不同之处就是set中不允许存在相同的元素

python的collections类_第4张图片

3、如果要统计一个字符串中每个字符出现的次数,可以使用defaultdict(int)

python的collections类_第5张图片

三、OrdereDict的使用

1、orderedDict是collections中的一个包,能够记录字典元素的插入顺序,常常和排序函数一起使用来生成一个排序的字典默认的dict是不保证顺序的,但是该类可以保证插入的顺序。

python的collections类_第6张图片

2、如果我们要删除dict中的key-value,popitem()按照先进后出的顺序删除dict中的key-value

python的collections类_第7张图片

四、deque

list存储数据的优势在于按找索引查找元素会很快,但是插入和删除元素就很慢了,因为它是是单链表的数据结构。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈,而且线程安全。

list只提供了append和pop方法来从list的尾部插入/删除元素,但是deque新增了appendleft/popleft允许我们高效的在元素的开头来插入/删除元素。而且使用deque在队列两端添加(append)或弹出(pop)元素的算法复杂度大约是O(1),但是对于list对象改变列表长度和数据位置的操作例如 pop(0)和insert(0, v)操作的复杂度高达O(n)。由于对deque的操作和list基本一致,这里就不重复了。

五、ChainMap

ChainMap可以合并多个dict,而且效率很高

python的collections类_第8张图片

你可能感兴趣的:(python的collections类)