【Python】常用模块(三)——collections模块中的几个常用方法详解

前言

本篇博客主要就少Python常用模块collections中的几个常用方法,作为一种更高级的数据结构,这个模块提供了几个高效的方法来处理数据。

Counter

Counter用于统计元素个数,具体用法如下:

>>> from clooections import Counter as counter
>>> s = counter('aasasdasdfasdfg')  # 统计每个元素个数
>>> s
Counter({'a': 5, 's': 4, 'd': 3, 'f': 2, 'g': 1})
>>> s.most_common(3)  # 输出出现次数最多的三个元素
[('a', 5), ('s', 4), ('d', 3)]
>>> a = counter('asdfgh')
>>> s.update(a)   # 统计结果进行加和
>>> s
Counter({'a': 6, 's': 5, 'd': 4, 'f': 3, 'g': 2, 'h': 1})
>>> b = counter('gghh')
>>> s.subtract(b)   # 统计结果做减法,注:结果可为负
>>> s
Counter({'a': 6, 's': 5, 'd': 4, 'f': 3, 'g': 0, 'h': -1})

deque

deque与list的用法类似,但可以更简单的实现复杂功能,list数据结构对于索引查询效率很高,但插入和删除会很慢,deque实现了双向列表,适合队列和栈。

>>> from collections import deque
>>> q = deque(['a','s','d','f','g','h'])
>>> q.pop()   
'h'
>>> q
deque(['a', 's', 'd', 'f', 'g'])
>>> q.append('h')   
>>> q
deque(['a', 's', 'd', 'f', 'g', 'h'])
>>> q.popleft()  # 从左面pop元素
'a'
>>> q
deque(['s', 'd', 'f', 'g', 'h'])
>>> q.appendleft('a')  # 从左面append元素
>>> q
deque(['a', 's', 'd', 'f', 'g', 'h'])
>>> q.extend([1,2,3])
>>> q
deque(['a', 's', 'd', 'f', 'g', 'h', 1, 2, 3])
>>> q.extendleft([3,2,1])  # 从左面扩展列表,注意倒序扩展
>>> q
deque([1, 2, 3, 'a', 's', 'd', 'f', 'g', 'h', 1, 2, 3])
>>> q.rotate(3)  # 将右面三个元素附加到左面
>>> q
deque([1, 2, 3, 1, 2, 3, 'a', 's', 'd', 'f', 'g', 'h'])

defaultdict

为字典设置默认类型

people = [['male', 'winter'], ['female', 'elly'], ['male', 'frank'], ['female', 'emma']]
#将男性女性分开,所有男性放到'male'中,所有女性放放到'female'中
gender_sort = {}

for info in people:
    if info[0] in gender_sort:
        gender_sort[info[0]].append(info[1])
    else:
        gender_sort[info[0]] = [info[1]]

print(gender_sort)    #结果{'male': ['winter', 'frank'], 'female': ['elly', 'emma']}

使用defaultdict,如下:

people = [['male', 'winter'], ['female', 'elly'], ['male', 'frank'], ['female', 'emma']]

gender_sort = collections.defaultdict(list)
for info in people:
    gender_sort[info[0]].append(info[1])

print(gender_sort)      #结果defaultdict(, {'male': ['winter', 'frank'], 'female': ['elly', 'emma']})
  • 更新时间:2018/04/25

你可能感兴趣的:(python,Python学习笔记)