python的常用模块之collections模块详解

  • Post category:Python

Python的常用模块之collections模块详解

1. collections模块简介

Python的collections模块是一个非常有用的模块,在处理数据集合时提供了一些有用的类,比如:OrderedDictdefaultdictCounter等等。这些类是Python内置类型的扩展,并且还提供了一些高效和有用的方法,方便我们进行一些常用的操作,如:查找、统计、排序等。

2. OrderedDict类

在Python中,字典是无序的,如果我们需要保持其顺序,那么我们需要使用OrderedDict类。OrderedDict内部维护了一个双向列表(linked-list),因此添加的顺序决定了元素的顺序。

2.1. OrderedDict类的创建

创建一个空的有序字典的方法

from collections import OrderedDict
d = OrderedDict()

创建一个有序字典,并初始化

from collections import OrderedDict
d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])

2.2. OrderedDict的基本方法

2.2.1. 按照插入顺序遍历

for key, value in d.items():
    print(key, value)

2.2.2. 弹出并返回最后一个键值对

d.popitem()

2.2.3. 移动一个元素到队尾

d.move_to_end(key)

3. defaultdict类

defaultdict可以让我们在使用一个不存在的键时自动初始化一个值。这样,在我们需要选择性的增加某些值时,代码更加简洁清晰。

3.1. defaultdict类的创建

from collections import defaultdict
d = defaultdict(int)

这样,当我们访问一个不存在的键时,它会自动创建并使用int()函数初始化键值对值。

还可以通过lambda表达式的形式初始化字典的值,例如:

d = defaultdict(lambda: [])

这样,当我们访问一个不存在的键时,它会自动创建并使用[]列表初始化键值对值。

3.2. defaultdict的基本方法

3.2.1. 根据键值删除字典中的项

del d['a']

3.2.2. 将键值对添加到字典中

d['a'] = 1

3.2.3. 查看某个键对应的值

print(d['a'])

4. Counter类

Counter可以用来统计序列或者列表中元素的出现频率,返回的结果是一个字典。

4.1. Counter类的创建

from collections import Counter
c = Counter('hello world')

这样,c字典中保存了’hello world’中每个字符出现的次数。

4.2. Counter的基本方法

4.2.1. 打印出出现频率前n的键值对

print(c.most_common(n))

4.2.2. 清除Counter

c.clear()

5. 总结

以上就是collections模块的详细介绍,可以看出,该模块提供了很多方便的操作,非常适合在数据集合中使用。我们应该根据实际需求选取所需的类库来使用。