python常用内建模块:collections

collections 是 Python 标准库中的一个模块,它提供了许多有用的容器数据类型,这些类型是对内置类型的扩展或补充。以下是 collections 模块中一些常用的类和它们的基本用法:

导入模块

首先,你需要导入 collections 模块:

复制代码

python复制代码

|---|----------------------|
| | import collections |

常用类和用途

  1. namedtuple

    namedtuple 是一个工厂函数,用于创建可以通过属性名访问元素内容的元组子类。它使得代码更加清晰和可读。

    复制代码

    python复制代码

    |---|-------------------------------------------------------|
    | | Point = collections.namedtuple('Point', ['x', 'y']) |
    | | p = Point(1, 2) |
    | | print(p.x, p.y) # 输出: 1 2 |

  2. deque

    deque 是一个双端队列,支持从两端快速添加和删除元素。它对于实现队列和栈非常有用。

    复制代码

    python复制代码

    |---|--------------------------------|
    | | d = collections.deque() |
    | | d.append(1) |
    | | d.appendleft(2) |
    | | print(d) # 输出: deque([2, 1]) |
    | | print(d.pop()) # 输出: 1 |
    | | print(d.popleft()) # 输出: 2 |

  3. Counter

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

    复制代码

    python复制代码

    |---|------------------------------------------------------------|
    | | c = collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']) |
    | | print(c) # 输出: Counter({'b': 3, 'a': 2, 'c': 1}) |
    | | print(c['a']) # 输出: 2 |
    | | c['d'] += 1 |
    | | print(c) # 输出: Counter({'b': 3, 'a': 2, 'c': 1, 'd': 1}) |

  4. defaultdict

    defaultdict 是一个字典子类,它调用一个工厂函数来提供缺失的键的值。这避免了在访问不存在的键时抛出 KeyError

    复制代码

    python复制代码

    |---|-------------------------------------------|
    | | dd = collections.defaultdict(int) |
    | | dd['a'] += 1 |
    | | print(dd['a']) # 输出: 1 |
    | | print(dd['b']) # 输出: 0,因为默认值是 int 类型的 0 |

  5. OrderedDict

    OrderedDict 是一个字典子类,它记住了元素被添加的顺序。这对于需要保持元素插入顺序的场景非常有用。

    复制代码

    python复制代码

    |---|----------------------------------|
    | | od = collections.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 |

  6. ChainMap

    ChainMap 将多个字典或映射对象组合成一个视图,以便可以像单个字典一样进行查找操作。它首先查找第一个映射,如果找不到,则查找下一个,依此类推。

    复制代码

    python复制代码

    |---|----------------------------------------------------------|
    | | c = collections.ChainMap({'a': 1}, {'b': 2}, {'a': 3}) |
    | | print(c['a']) # 输出: 1,因为第一个映射中有 'a' |
    | | print(c['b']) # 输出: 2,因为第二个映射中有 'b' |
    | | print(list(c.keys())) # 输出: ['a', 'b'],按第一个映射中的顺序 |

  7. UserDict, UserList, UserString

    这些类分别是对内置 dict, list, 和 str 类型的封装,提供了更多的灵活性来扩展或修改它们的行为。它们通常用于需要继承内置类型并添加额外功能的情况。

    复制代码

    python复制代码

    |---|-------------------------------------------|
    | | class MyDict(collections.UserDict): |
    | | def __missing__(self, key): |
    | | return 'default_value' # 当访问不存在的键时返回默认值 |
    | | |
    | | mydict = MyDict() |
    | | print(mydict['a']) # 输出: default_value |

通过使用 collections 模块中的这些类和函数,你可以更有效地处理数据,并编写更清晰、更具可读性的代码。

相关推荐
databook7 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar8 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780519 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_9 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机15 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机16 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机16 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机16 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i17 小时前
drf初步梳理
python·django
每日AI新事件17 小时前
python的异步函数
python