一、Counter的使用
1、统计相关元素出现的次数,可以用Counter
2、elements()方法获取Counter()生成对象的所有键名,重复的几个会全部打印,返回一个iterator(迭代器)。most_common(n)返回一个list, list中包含Counter对象中出现最多前n个元素。
二、defaultdict的使用
该类型除了在处理不存在的键的操作之外与普通的字典完全相同。defaultdict在字典dict的基础之上添加一个参数default_factory(default_factory可以指定为list,set,int)
1、将下面的list转换成一个dict,其中key对应的value是一个list
2、1中value中包含重复元素,如果我们不想要value中的元素重复,可以用defaultdict(set)来解决这个问题,set与list不同之处就是set中不允许存在相同的元素
3、如果要统计一个字符串中每个字符出现的次数,可以使用defaultdict(int)
三、OrdereDict的使用
1、orderedDict是collections中的一个包,能够记录字典元素的插入顺序,常常和排序函数一起使用来生成一个排序的字典默认的dict是不保证顺序的,但是该类可以保证插入的顺序。
2、如果我们要删除dict中的key-value,popitem()按照先进后出的顺序删除dict中的key-value
四、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,而且效率很高
网友评论