欢迎访问宙启技术站
智能推送

讲解Python中的collections模块中的一些常用函数及其用法

发布时间:2023-07-04 09:38:14

Python中的collections模块提供了许多用于管理和操作数据集合的工具。这些工具包括默认字典(defaultdict)、计数器(Counter)、命名元组(namedtuple)和有序字典(OrderedDict)等。

1. 默认字典(defaultdict):默认字典是一种字典子类,它接受一个工厂函数作为参数来提供缺失的键的默认值。当访问一个不存在的键时,如果该键在字典中不存在,则会返回工厂函数提供的默认值。默认字典特别适用于处理一些常见的数据结构,如图和树等。

from collections import defaultdict

d = defaultdict(int)
d['a'] = 1
print(d['a'])  # 1
print(d['b'])  # 0,因为'b'在字典中不存在,默认值是int()的默认值,即0

2. 计数器(Counter):计数器是一个字典子类,用于统计可哈希对象的数量。它可以接受任何可迭代对象作为输入,并返回一个字典,其中每个元素是输入中的元素及其出现的次数。

from collections import Counter

c = Counter(['a', 'b', 'a', 'c', 'a', 'b'])
print(c)  # Counter({'a': 3, 'b': 2, 'c': 1})
print(c['a'])  # 3,'a'出现了3次
print(c.most_common(2))  # [('a', 3), ('b', 2)],出现次数最多的两个元素和它们的计数

3. 命名元组(namedtuple):命名元组是一个具有名称的元组,可以使代码更具可读性,并且比普通元组更具可维护性。它可以像普通元组一样使用索引来访问元素,也可以使用名称来访问元素。

from collections import namedtuple

Person = namedtuple('Person', ['name', 'age'])
p = Person('Alice', 25)
print(p.name)  # Alice
print(p.age)  # 25

4. 有序字典(OrderedDict):有序字典是一个字典子类,它记住了它们被插入的顺序。与常规字典不同,有序字典的迭代顺序不会随着元素的插入顺序的改变而改变。

from collections import OrderedDict

d = OrderedDict()
d['a'] = 1
d['b'] = 2
d['c'] = 3
for key, value in d.items():
    print(key, value)
# 输出:
# a 1
# b 2
# c 3

除了这些常用函数外,collections模块还提供了其他一些实用的工具,如命名元组的替代品(namedtuple)、double-ended queue(deque)等。通过使用collections模块中提供的这些工具,可以更方便地处理和操作数据集合。