python 中的 collections 模块:常用数据结构和工具详解
2023-12-15 23:37:43
Python 的 ??collections?
? 模块提供了许多有用的数据结构,超越了标准的内置数据类型。这些数据结构解决了各种常见的编程问题,包括但不限于高效的容器类型、特定目的的容器、默认值字典等。让我们深入了解其中的几个重要数据结构和工具。
1. ??defaultdict?
?:带有默认值的字典
??defaultdict?
?? 是 ??dict?
? 的一个子类,它在创建时指定一个默认工厂函数来为字典提供默认值。
示例 1:统计字符出现次数
from collections import defaultdict
text = "apple"
char_count = defaultdict(int)
for char in text:
char_count[char] += 1
print(char_count)
# 输出:defaultdict(<class 'int'>, {'a': 1, 'p': 2, 'l': 1, 'e': 1})
2. ??Counter?
?:计数器
??Counter?
? 是用于计数可哈希对象的子类字典。它可用于快速计数,检查元素出现的次数等。
示例 2:统计列表中元素出现次数
from collections import Counter
numbers = [1, 2, 3, 4, 1, 2, 1, 3, 2]
number_count = Counter(numbers)
print(number_count)
# 输出:Counter({1: 3, 2: 3, 3: 2, 4: 1})
3. ??deque?
?:双向队列
??deque?
? 是一个双向队列,可以在两端高效地进行添加和删除操作。
示例 3:实现队列和栈
from collections import deque
# 队列
queue = deque()
queue.append(1)
queue.append(2)
queue.popleft() # 输出:1
# 栈
stack = deque()
stack.append(1)
stack.append(2)
stack.pop() # 输出:2
4. ??namedtuple?
?:命名元组
??namedtuple?
? 创建带有命名字段的元组,可以方便地为元组的字段命名。
示例 4:定义命名元组类型
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y) # 输出:1 2
5. ??ChainMap?
?:链式映射
??ChainMap?
? 可以将多个字典或映射连接成一个单独的映射,无需创建新的字典。
示例 5:合并字典并查找值
from collections import ChainMap
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
chain = ChainMap(dict1, dict2)
print(chain['a']) # 输出:1
print(chain['c']) # 输出:3
这些示例展示了 ??collections?
? 模块中几个重要的数据结构和工具的用法。它们为 Python 程序员提供了更多灵活和高效地处理数据的方式。
文章来源:https://blog.csdn.net/qq_41586251/article/details/134980891
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!