Collections的常用方法

本文深入探讨了算法标注工程师的角色,解析了其工作流程与技能需求,并分享了行业趋势与最佳实践。
### Python `collections` 模块常用方法总结 Python 的 `collections` 模块提供了许多用于处理数据结构的容器类,这些容器是对内置数据类型的扩展和增强。以下是该模块中常用的类及其方法的详细介绍。 #### 1. `namedtuple` `namedtuple` 是一个工厂函数,用于创建具有命名字段的元组子类[^1]。 ```python from collections import namedtuple Point = namedtuple("Point", ["x", "y"]) p = Point(10, 20) print(p.x, p.y) # 输出: 10 20 ``` #### 2. `deque` `deque` 是一个双端队列,支持从两端高效地添加或删除元素[^3]。 - `append(x)`:在右侧添加元素。 - `appendleft(x)`:在左侧添加元素。 - `pop()`:移除并返回右侧元素。 - `popleft()`:移除并返回左侧元素。 - `count(x)`:计算指定元素的数量。 ```python from collections import deque d = deque([1, 2, 3]) d.append(4) d.appendleft(0) print(d) # 输出: deque([0, 1, 2, 3, 4]) b = d.count(2) print(b) # 输出: 1 ``` #### 3. `Counter` `Counter` 是一个字典子类,用于计数可哈希对象。它返回一个以元素为键、出现次数为值的字典[^2]。 - `elements()`:返回一个迭代器,包含所有元素(每个元素复其计数次)。 - `most_common([n])`:返回前 n 个最常见的元素及其计数。 - `subtract(iterable)`:从计数中减指定的元素。 ```python from collections import Counter s = 'abcbcaccbbad' s_counter = Counter(s) print(s_counter.most_common(2)) # 输出: [('b', 4), ('c', 3)] s_counter.subtract('ae') print(s_counter) # 输出: Counter({'b': 4, 'c': 3, 'a': 1, 'd': 1, 'e': -1}) ``` #### 4. `OrderedDict` `OrderedDict` 是一个字典子类,保留了键值对的插入顺序[^4]。 ```python from collections import OrderedDict od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) print(od.keys()) # 输出: odict_keys(['a', 'b', 'c']) ``` #### 5. `defaultdict` `defaultdict` 是一个字典子类,提供了一个默认值生成器,当访问不存在的键时会自动调用该生成器[^5]。 ```python from collections import defaultdict def getUserInfo(): return {"name": "", "age": 0} default_dict = defaultdict(getUserInfo) admin = default_dict["admin"] print(admin) # 输出: {'name': '', 'age': 0} admin["age"] = 34 print(admin) # 输出: {'name': '', 'age': 34} ``` #### 6. `ChainMap` `ChainMap` 将多个字典或其他映射组合成一个逻辑上的映射。查找时会在每个映射中依次查找[^4]。 ```python from collections import ChainMap dict1 = {"a": 1, "b": 2} dict2 = {"b": 3, "c": 4} chain = ChainMap(dict1, dict2) print(chain["b"]) # 输出: 2 (优先使用第一个映射中的值) ``` #### 7. `UserDict`, `UserList`, `UserString` 这些类是 `dict`, `list`, `str` 的包装器,允许用户自定义行为。 --- ### 注意事项 - `namedtuple` 创建的对象是不可变的,类似于普通元组[^1]。 - `deque` 在需要频繁插入和删除操作时比列表更高效[^3]。 - `Counter` 的结果可以与其他 `Counter` 对象进行数学运算,如加法、减法等[^2]。 - `OrderedDict` 自 Python 3.7 起,普通字典也保证了插入顺序,但在某些场景下仍可能需要使用 `OrderedDict`[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值