Python 字典和集合(字典的变种)

打印 上一主题 下一主题

主题 1546|帖子 1546|积分 4638

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本章内容的大纲如下:
常见的字典方法
怎样处置处罚查找不到的键
标准库中 dict 类型的变种set 和 frozenset 类型
散列表的工作原理
散列表带来的潜在影响(什么样的数据类型可作为键、不可预知的
次序,等等)
  字典的变种

这一节总结了标准库里 collections 模块中,除了 defaultdict 之外
的差别映射类型。
collections.OrderedDict
这个类型在添加键的时候会保持次序,因此键的迭代次序总是划一
的。OrderedDict 的 popitem 方法默认删除并返回的是字典里的末了
一个元素,但是如果像 my_odict.popitem(last=False) 如许调用
它,那么它删除并返回第一个被添加进去的元素。
collections.ChainMap
该类型可以容纳数个差别的映射对象,然后在进行键查找操作的时
候,这些对象会被当作一个团体被逐个查找,直到键被找到为止。这个
功能在给有嵌套作用域的语言做解释器的时候很有用,可以用一个映射
对象来代表一个作用域的上下文。在 collections 文档介绍 ChainMap
对象的那一部门
(https://docs.python.org/3/library/collections.html#collections.ChainMap)
里有一些具体的使用示例,其中包含了下面这个 Python 变量查询规则的
代码片断:
  1. import builtins
  2. pylookup = ChainMap(locals(), globals(), vars(builtins))
复制代码
collections.Counter
这个映射类型会给键预备一个整数计数器。每次更新一个键的时候
都会增加这个计数器。所以这个类型可以用来给可散列表对象计数,或
者是当成多重集来用——多重集合就是集合里的元素可以出现不止一
次。Counter 实现了 + 和 - 运算符用来合并记载,还有像
most_common([n]) 这类很有用的方法。most_common([n]) 会按照次
序返回映射里最常见的 n 个键和它们的计数,详情参阅文档
(https://docs.python.org/3/library/collections.html#collections.Counter)。
下面的小例子利用 Counter 来盘算单词中各个字母出现的次数:
  1. >>> ct = collections.Counter('abracadabra')
  2. >>> ct
  3. Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
  4. >>> ct.update('aaaaazzz')
  5. >>> ct
  6. Counter({'a': 10, 'z': 3, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
  7. >>> ct.most_common(2)
  8. [('a', 10), ('z', 3)]
复制代码
colllections.UserDict
这个类其实就是把标准 dict 用纯 Python 又实现了一遍。
跟 OrderedDict、ChainMap 和 Counter 这些开箱即用的类型不
同,UserDict 是让用户继承写子类的。下面就来试试。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表