怎么使用 Python 内置库 collections?
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么使用 Python 内置库 collections?相关的知识,希望对你有一定的参考价值。
Python 内置库 collections
提供了一些方便的数据类型和函数,可以在处理数据时提供更高效的方法。以下是一些常见的使用方法:
Counter:计数器
collections.Counter
类可以用来计算序列中元素的出现次数,并以字典的形式返回结果。
from collections import Counter
my_list = ['apple', 'banana', 'apple', 'cherry', 'cherry', 'cherry']
my_counter = Counter(my_list)
print(my_counter) # Counter('cherry': 3, 'apple': 2, 'banana': 1)
defaultdict:默认字典
collections.defaultdict
类是一个字典,它可以自动为缺失的键添加默认值。
from collections import defaultdict
my_dict = defaultdict(int) # 默认值为 int 类型的 0
my_dict['a'] += 1
my_dict['b'] += 2
print(my_dict) # defaultdict(<class 'int'>, 'a': 1, 'b': 2)
deque:双向队列
collections.deque
类是一个双向队列,可以在队列的两端高效地添加或删除元素。
from collections import deque
my_deque = deque([1, 2, 3])
my_deque.appendleft(0)
my_deque.append(4)
print(my_deque) # deque([0, 1, 2, 3, 4])
namedtuple:命名元组
collections.namedtuple 类是一个工厂函数,用来创建一个具有命名字段的元组类。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y) # 1 2
以上是 collections
中的几个常用类,当然 collections
还有很多其他的类和函数,可以根据实际需要选择使用。
OrderedDict:有序字典
collections.OrderedDict
类是一个字典,它保留了键值对添加的顺序。
from collections import OrderedDict
my_dict = OrderedDict()
my_dict['a'] = 1
my_dict['b'] = 2
my_dict['c'] = 3
print(my_dict) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
ChainMap:链式映射
collections.ChainMap
类可以将多个字典或映射对象链接在一起,形成一个逻辑上的单一映射。
from collections import ChainMap
dict1 = 'a': 1, 'b': 2
dict2 = 'c': 3, 'd': 4
chain_map = ChainMap(dict1, dict2)
print(chain_map['a'], chain_map['d']) # 1 4
namedtuple 的一些高级用法
命名元组也可以使用 _make()
方法通过一个可迭代对象来创建一个新的实例。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
t = [1, 2]
p = Point._make(t)
print(p) # Point(x=1, y=2)
另外,命名元组也可以使用 _asdict()
方法将其转换为一个有序字典。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict()) # OrderedDict([('x', 1), ('y', 2)])
以上是 collections
中的一些常用类和函数,可以根据具体需求来选择使用。
以上是关于怎么使用 Python 内置库 collections?的主要内容,如果未能解决你的问题,请参考以下文章