python进阶collections标准库使用示例详解

  • Post category:Python

Python进阶:collections标准库使用示例详解

collections是Python的标准库之一,提供了一系列优秀、高效、易用的容器类型,比内置的容器(如字典、列表等)更加强大,可以很方便地进行数据结构操作,提高编程效率。本文将对collections的主要容器进行介绍和示例演示。

1. Counter计数器

Counter是一个简单而强大的容器,用于将可迭代对象中的元素计数。它常用于计算词频(Word Frequency),即文本中每个单词出现的次数。使用方法如下:

from collections import Counter

text = "This is a text for testing counter. This is another test for Counter."
words = text.split()  # 对文本进行切分,并去除空格、标点符号等
counter = Counter(words)  # 统计每个单词的出现次数

print(counter)

运行结果如下:

Counter({'This': 2, 'is': 2, 'a': 1, 'text': 1, 'for': 2, 'testing': 1, 'counter.': 1, 'another': 1, 'test': 1, 'Counter.': 1})

可以看到,返回的是一个字典类型,其中包含了文本中每个单词作为key,以及它们出现的次数作为value。

2. defaultdict默认字典

defaultdict是一个可以设置默认值的字典,当查找的key不存在时,会用默认值代替。使用方法如下:

from collections import defaultdict

text = "This is a text for testing defaultdict. This is another test for defaultdict."
words = text.split()  # 对文本进行切分,并去除空格、标点符号等

# 初始化一个空字典,并设置默认类型为list
word_dict = defaultdict(list)  

# 循环遍历文本中的单词,将每个单词所在的位置添加到相应的列表中
for i, word in enumerate(words):
    word_dict[word].append(i)

print(word_dict)

运行结果如下:

defaultdict(<class 'list'>, {'This': [0, 7], 'is': [1, 8], 'a': [2], 'text': [3], 'for': [4, 11], 'testing': [5], 'defaultdict.': [6, 13], 'another': [9], 'test': [10], 'defaultdict.': [12]})

可以看到,返回的仍然是一个字典类型,但是在查找的key不存在时,会返回一个默认值,这里是空列表。同时,在循环遍历文本中的单词时,我们将每个单词所在的位置添加到相应的列表中,以此来统计每个单词出现的位置。

3. 示例一:Deque双向队列

deque是一个双向队列,可以在队列的两端进行各种操作,如添加或删除元素等,且复杂度为O(1)。deque可以作为非常高效的队列或者栈使用。示例代码如下:

from collections import deque

q = deque([1, 2, 3, 4, 5])

# 队列中添加元素
q.append(6)
q.appendleft(0)

# 队列中删除元素
q.pop()
q.popleft()

print(q)

运行结果如下:

deque([0, 1, 2, 3, 4, 5])

可以看到,使用deque可以很容易地进行队列或者栈的操作。

4. 示例二:OrderedDict有序字典

OrderedDict是一个有序字典,可以按照元素添加的顺序进行排序,并且支持按照key进行排序。示例代码如下:

from collections import OrderedDict

d = OrderedDict()

d['b'] = 1
d['a'] = 2
d['d'] = 3
d['c'] = 4

print(d)  # 按照添加的顺序排序

sorted_d = OrderedDict(sorted(d.items(), key=lambda x: x[0]))
print(sorted_d)  # 按照key来进行排序

运行结果如下:

OrderedDict([('b', 1), ('a', 2), ('d', 3), ('c', 4)])
OrderedDict([('a', 2), ('b', 1), ('c', 4), ('d', 3)])

可以看到,该示例演示了如何按照元素添加的顺序排序和按照key进行排序。

结语

本文详细介绍了Python中的collections标准库及其各种容器类型的使用,包括Counter计数器、defaultdict默认字典、deque双向队列和OrderedDict有序字典,并演示了两个详细的示例。希望本文能够对大家学习Python和数据结构有所帮助。