首页 经验

python collection

时间: 2024-05-06 09:36:53

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)


Python的collections模块是Python标准库中一个非常强大和常用的模块,它提供了一系列特殊的容器数据类型,这些数据类型比内置的数据类型(如list、tuple、dict等)更加灵活和高效。在本文中,我将介绍collections模块中的一些主要数据类型及其用法。

1. Counter计数器

Counter是一个用来跟踪值出现次数的字典子类。它可以接受任何可迭代对象作为输入,并将元素作为键,元素的出现次数作为值进行统计。Counter对象还提供了一些有用的方法,如most_common(n)用来获取出现次数最多的n个元素。Counter的使用场景包括统计词频、元素频率等。

from collections import Counter
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts)  # Counter({'apple': 3, 'banana': 2, 'orange': 1})
top_two = word_counts.most_common(2)
print(top_two)  # [('apple', 3), ('banana', 2)]

2. defaultdict默认字典

defaultdict是字典的一个子类,它接受一个工厂函数作为参数,用来为字典的缺失键提供默认值。当试图访问一个不存在的键时,defaultdict会自动调用工厂函数来生成默认值,而不是引发KeyError异常。这在处理缺失键时非常方便。

from collections import defaultdict
d = defaultdict(int)
d['a'] = 1
d['b'] = 2
print(d['a'])  # 1
print(d['c'])  # 0,因为int()的默认返回值为0

3. deque双端队列

deque是一个双端队列,支持在两端进行快速插入和删除操作,其时间复杂度为O(1)。deque的设计使得它在需要频繁地进行头部或尾部的插入、删除操作时比列表更加高效。

from collections import deque
d = deque([1, 2, 3])
d.appendleft(0)
d.append(4)
print(d)  # deque([0, 1, 2, 3, 4])
d.popleft()
print(d)  # deque([1, 2, 3, 4])

4. namedtuple命名元组

namedtuple是一个工厂函数,用来创建具有命名字段的元组子类。与普通元组相比,命名元组的字段可以通过字段名来访问,这使得代码更加清晰易读。

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)  # 1 2

5. OrderedDict有序字典

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模块中一些常用数据类型的简要介绍和示例。通过充分利用collections模块提供的这些高效数据类型,我们可以更加方便地处理各种复杂的数据结构和算法问题。


上一个 insert python 文章列表 下一个 python opcua

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号