1. 前言
dict类型不但在各种程序中广泛使用,它也是Python的基石。模块的命名空间、实例的属性和函数的关键字参数等都用到了dict.与dict先关的内置函数都在__builtins__.__dict__模块中。
由于字典至关重要,Python对其实现做了高度优化,而散列表(哈希函数,Hash)则是字典性能突出的根本原因。而且集合(set)的实现也依赖于散列表。
本片的大纲如下:
常见的字典方法;
如何处理找不到的键;
标准库中dict类型的变种;
set和frozenset类型;
散列表工作原理;
散列表带来的潜在影响(什么样的数据可以作为键、不可预知的顺序等)。
2. 字典
和上一篇一样,先来看看collections.abc模块中的两个抽象基类:Mapping和MutableMapping.它们的作用是为dict和其他类似的类型定义形式接口。
然而,非抽象映射类型一般不会直接继承这些抽象基类,它们会直接对dict或者collections.UserDict进行扩展。
2.1 创建字典
首先总结下常用的创建字典的方法:
2.2 字典推导
列表推导和生成器表达式可以用在字典上。字典推导(dictcomp)可从任何以键值对作为元素的可迭代对象中构建出字典。
2.3 两个重要的映射方法update和setdefault
2.3.1 update方法
update方法处理参数m的方法是典型的“鸭子类型”.该方法首先检测m是否有keys方法,如果有,那么update方法就把m当做映射对象来处理(即使它并不是映射对象);否则退一步,把m当做包含了键值对(key, value)元素的迭代器。
Python中大多数映射类的构造方法都采用了类似的逻辑,因此既可用一个映射对象来新建一个映射对象,也可以用包含(key, value)元素的可迭代对象来初始化一个映射对象。
一项针对Python开发人员的新调查显示,数据分析和Web开发已成为Python的主要用例,机器学习的发展势头强劲。
该调查由PyCharm IDE的制造商JetBrains和Python软件基金会共同发起,收集了来自150个国家的9,500名Python开发人员的结果。
Python开发者:你使用Python做什么
结果表明,用Python编写脚本,自动化,devops和网页抓取有关的应用,被调查的开发者中有32%到35%使用了这些应用。其中50%的人使用Python作为数据分析工具,51%是他们的语言主要工作,46%是次要任务。
更多潍坊培训学校相关资讯,请扫描下方二维码