python内置模块collections常用方法介绍
- 2018-06-08 17:36:27
- 开发
- 51
- shevechco
collections是Python标准库中提供高效数据结构的模块,扩展了内置数据类型,适用于处理复杂数据场景。
接着我们来看看collections模块中有哪些方法
1.双端队列deque
deque初始化器接受两个可选参数:Iterable(一个可迭代对象)和 maxlen(一个整数,指定队列的最大长度)。如果不提供 iterable,则将会得到一个空的 deque;如果为 maxlen 提供一个值,那么deque最多只能存储maxlen项。
deque可以实现高效队列(FIFO)或栈(LIFO),支持快速头尾插入/删除。
from collections import deque
dq = deque([1,2,3,4])
dq2 = deque("abcd")
print(dq)
print(dq2)
打印返回
deque([1, 2, 3, 4])
deque(['a', 'b', 'c', 'd'])
deque([0, 1, 2, 3, 4])
deque([4, 0, 1, 2, 3])
方法 | 描述 |
---|---|
append(x) | 右端添加元素 |
appendleft(x) | 左端添加元素 |
pop() | 移除并返回右端元素 |
popleft() | 移除并返回左端元素 |
extend(iterable) | 右端扩展多个元素 |
extendleft(iterable) | 左端扩展多个元素(逆序添加) |
rotate(n) | 循环右移 n 步(负数为左移) |
2.计数器Counter
对对象进行计数是编程中常见的操作,在计算给定项在列表或可迭代对象中出现的次数时,如果清单很短,那么计算各项的频次可以很快;但如果是一个很长的清单,计数将是具挑战性的工作。
from collections import Counter
count = Counter("afktmqmasmerkfmaafrflsktg")
print(count)
print(count.most_common(3))
count.update(["f", "g", "r"])
print(count)
打印返回
Counter({'a': 4, 'f': 4, 'm': 4, 'k': 3, 't': 2, 's': 2, 'r': 2, 'q': 1, 'e': 1, 'l': 1, 'g': 1})
[('a', 4), ('f', 4), ('m', 4)]
Counter({'f': 5, 'a': 4, 'm': 4, 'k': 3, 'r': 3, 't': 2, 's': 2, 'g': 2, 'q': 1, 'e': 1, 'l': 1})
方法 | 描述 |
---|---|
elements() | 返回元素迭代器(按计数重复) |
most_common(n) | 返回频率最高的前 n 个元素 |
update(iterable) | 合并其他元素的计数 |
3.默认字典defaultdict
在Python中使用字典时,一个常见问题是如何处理不存在的键(missing keys)。直接访问一个在给定字典中不存在的键,会引发KeyError,我们可以使用defaultdict解决这个问题
可以使用任何可调用对象作为构造函数的输入参数,比如 int()、list()
from collections import defaultdict
arr = ["sulao", "shevechco", "merci"]
count = defaultdict(int)
for d in arr:
count[d] += 1
print(count)
打印返回
defaultdict(<class 'int'>, {'sulao': 1, 'shevechco': 1, 'merci': 1})
4.有序字典OrderedDict
OrderedDict 是一个有序的字典,它将键值对按照插入顺序进行排序。相比于普通字典,OrderedDict 可以保证元素的顺序不变,普通字典的元素顺序是不确定的。
from collections import OrderedDict
arr = OrderedDict({"name": "sulao", "alias": "shevechco"})
arr["nick"] = "merci"
print(arr)
arr.move_to_end("name")
print(arr)
打印返回
OrderedDict({'name': 'sulao', 'alias': 'shevechco', 'nick': 'merci'})
OrderedDict({'alias': 'shevechco', 'nick': 'merci', 'name': 'sulao'})
方法 | 描述 |
---|---|
move_to_end(key) | 将键移动到字典末尾或开头 |
popitem(last=True) | 移除最后/最先插入的键值对 |
以上就是collections模块部分方法的使用介绍,当然这个模块下还有很多其他方法,如果需要使用的时候再进行学习。
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:http://www.sulao.cn/post/481