3.1 泛映射类型
-
collections.abc 模块中有Mapping和MutableMapping这俩个抽象类,作用是为dict和其他类似的类型定义形式接口

-
a = dict(one=1, two=2, three=3)
-
b = {'one':1, 'two': 2, 'three': 3}
-
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
-
d = dict([('two', 2), ('one', 1), ('three', 3)])
-
e = dict({'three': 3, 'one': 1, 'two': 2})
-
a == b == c == d == e # True
3.2 字典推导
3.3 常见的映射方法
- dict
- collections.defaultdict
- collections.OrderedDict
用setdefault处理找不到的键
- my_dict.setdefault(key, []).append(new_value)
3.4 映射的弹性键查询
- 处理找不到的键:
- defaultdict
- 如果有字典 dd = defaultdict(list), 如果键'new-key'在dd中还不存在的话
- 调用list()来建立一个新列表
- 把这个新列表作为值,'new-key'作为他的键,放到dd中
- 返回这个列表的引用
- 如果有字典 dd = defaultdict(list), 如果键'new-key'在dd中还不存在的话
- 自己定义一个dict的子类,实现__missing__方法
- __missing__方法只会被__getitem__调用
- defaultdict