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

相关推荐