python 字典扩展
时间: 2023-11-29 13:46:48 浏览: 87
Python中的字典扩展包括以下几种类型:
1.只读字典MappingProxyType:该类型的字典是只读的,即不能修改其内容。可以通过调用mappingproxy()方法将一个普通字典转换为只读字典。
2.缺省字典defaultdict:该类型的字典在初始化时需要指定一个默认值,当访问一个不存在的键时,会自动创建一个默认值并返回。可以通过collections模块中的defaultdict类来创建缺省字典。
3.ChainMap:该类型的字典可以将多个字典合并为一个字典,当访问一个键时,会按照字典的顺序依次查找,直到找到为止。可以通过collections模块中的ChainMap类来创建ChainMap字典。
下面是三种字典扩展类型的示例代码:
1.MappingProxyType只读字典:
```python
from types import MappingProxyType
d = {'a': 1, 'b': 2}
d_proxy = MappingProxyType(d)
print(d_proxy) # 输出:{'a': 1, 'b': 2}
# 尝试修改只读字典
try:
d_proxy['c'] = 3
except TypeError as e:
print(e) # 输出:'mappingproxy' object does not support item assignment
# 修改原字典
d['c'] = 3
print(d_proxy) # 输出:{'a': 1, 'b': 2, 'c': 3}
```
2.defaultdict缺省字典:
```python
from collections import defaultdict
d = defaultdict(int) # 默认值为0
d['a'] = 1
d['b'] += 1
print(d) # 输出:defaultdict(<class 'int'>, {'a': 1, 'b': 1})
```
3.ChainMap字典:
```python
from collections import ChainMap
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
d3 = {'c': 5, 'd': 6}
d = ChainMap(d1, d2, d3)
print(d['a']) # 输出:1
print(d['b']) # 输出:2
print(d['c']) # 输出:4
print(d['d']) # 输出:6
```
阅读全文