Python内置模块collections使用

Python 的 collections 模块提供了一系列有用的容器数据类型,这些数据类型扩展了内置的字典、列表、集合和元组等数据结构,提供了更丰富的功能。以下是一些常用的 collections 模块中的数据类型及其用法:

1. namedtuple

namedtuple 是一个工厂函数,用于创建可以通过属性名访问元素内容的元组子类。

from collections import namedtuple

# 创建一个名为Person的namedtuple
Person = namedtuple('Person', ['name', 'age', 'city'])

# 创建一个Person实例
p = Person(name='Alice', age=30, city='New York')

# 访问属性
print(p.name)  # 输出: Alice
print(p.age)   # 输出: 30
print(p.city)  # 输出: New York

2. deque

deque 是一个双端队列,支持从两端快速添加和弹出元素。

from collections import deque

# 创建一个deque实例
dq = deque()

# 从右端添加元素
dq.append(1)
dq.append(2)

# 从左端添加元素
dq.appendleft(0)

# 从右端弹出元素
print(dq.pop())  # 输出: 2

# 从左端弹出元素
print(dq.popleft())  # 输出: 0

# 当前deque内容
print(dq)  # 输出: deque([1])

3. Counter

Counter 是一个字典子类,用于计数可哈希对象。它是一个集合,其中元素存储为字典的键,计数存储为字典的值。

from collections import Counter

# 创建一个Counter实例
cnt = Counter(['a', 'b', 'c', 'a', 'b', 'b'])

# 访问计数
print(cnt['a'])  # 输出: 2
print(cnt['b'])  # 输出: 3

# 更新计数
cnt.update(['a', 'd', 'd', 'd'])
print(cnt['a'])  # 输出: 3
print(cnt['d'])  # 输出: 3

# 获取所有元素及其计数
print(cnt.items())  # 输出: dict_items([('a', 3), ('b', 3), ('c', 1), ('d', 3)])

4. defaultdict

defaultdict 是一个字典子类,它调用一个工厂函数来提供缺失的值。

from collections import defaultdict

# 创建一个defaultdict实例,默认值为0
dd = defaultdict(int)

# 访问不存在的键,会自动设置为默认值0
print(dd['a'])  # 输出: 0

# 更新值
dd['a'] += 1
print(dd['a'])  # 输出: 1

# 创建一个defaultdict实例,默认值为空列表
dd_list = defaultdict(list)
dd_list['b'].append(1)
dd_list['b'].append(2)
print(dd_list['b'])  # 输出: [1, 2]

5. OrderedDict

OrderedDict 是一个字典子类,它记住元素被添加的顺序。

from collections import OrderedDict

# 创建一个OrderedDict实例
od = OrderedDict()

# 添加元素
od['a'] = 1
od['b'] = 2
od['c'] = 3

# 按添加顺序遍历
for key, value in od.items():
    print(key, value)
# 输出:
# a 1
# b 2
# c 3

# 移动某个键到末尾
od.move_to_end('b')

# 再次遍历
for key, value in od.items():
    print(key, value)
# 输出:
# a 1
# c 3
# b 2

6. ChainMap

ChainMap 将多个字典或其他映射合并为一个视图,允许你像单个字典那样访问它们。

from collections import ChainMap

# 创建多个字典
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}

# 创建一个ChainMap实例
cm = ChainMap(d1, d2)

# 访问元素
print(cm['a'])  # 输出: 1
print(cm['b'])  # 输出: 2
print(cm['c'])  # 输出: 4

这些只是 collections 模块中的一些常用容器类型。根据你的需求,你可以选择适合的容器类型来简化代码和提高效率。

你可能感兴趣的:(Python基础,python,开发语言,Python基础,学习,python学习)