您当前的位置:首页 > 计算机 > 编程开发 > Python

Python标准库collections中与字典有关的类

时间:09-09来源:作者:点击数:

Python标准库中提供了很多扩展功能,大幅度提高了开发效率。这里主要介绍OrderedDict类、defaultdict类和Counter类。

(1)OrderedDict类

Python内置字典dict是无序的,如果需要一个可以记住元素插入顺序的字典,可以使用collections.OrderedDict。例如:

>>> import collections

>>> x = collections.OrderedDict()  #有序字典

>>> x['a'] = 3

>>> x['b'] = 5

>>> x['c'] = 8

>>> x

OrderedDict([('a', 3), ('b', 5), ('c', 8)])

(2)defaultdict类

使用collections模块的defaultdict类来统计字符出现频次。

>>> import string

>>> import random

>>> x = string.ascii_letters + string.digits + string.punctuation

>>> y = [random.choice(x) for i in range(1000)]

>>> z = ''.join(y)

>>> from collections import defaultdict

>>> frequences = defaultdict(int)  #所有值默认为0

>>> frequences

defaultdict(<class 'int'>, {})

>>> for item in z:

    frequences[item] += 1  #修改每个字符的频次

>>> frequences.items()

创建defaultdict对象时,传递的参数表示表示字典中值的类型,除了上面代码演示的int类型,还可以是任意合法的Python类型。

>>> from collections import defaultdict

>>> games = defaultdict(list)  #使用list作为值类型

>>> games  #所有值默认为空列表

defaultdict(<class 'list'>, {})

>>> games['name'].append('dong')   #可直接为字典games添加元素

>>> games['name'].append('zhang')

>>> games['score'].append(90)

>>> games['score'].append(93)

>>> games

defaultdict(<class 'list'>, {'score': [90, 93], 'name': ['dong', 'zhang']})

(3)Counter类

对于频次统计的问题,使用collections模块的Counter类可以更加快速地实现这个功能,并且能够提供更多的功能,例如查找出现次数最多的元素。

>>> from collections import Counter

>>> frequences = Counter(z)  #这里的z还是前面代码中的字符串对象

>>> frequences.items()

>>> frequences.most_common(1)  #返回出现次数最多的1个字符及其频率

>>> frequences.most_common(3) #返回出现次数最多的前3个字符及其频率

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门