前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Python标准库collections中与字典有关的类

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

作者头像
Python小屋屋主
发布2018-04-16 15:26:34
发布2018-04-16 15:26:34
1.4K0
举报
文章被收录于专栏:Python小屋Python小屋

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个字符及其频率

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档