字典
一:字典与列表的不同优秀之处
1.注意:列表有边界限制(禁止边界外的赋值).append
但是字典可以不用.append直接来
2.字典更灵活
二:字典方法
- 初始化
- 字典解析
- 字典视图(items、keys、values返回迭代对象)
- 字典比较
注:Python3对字典操作时遇到错误:dictionary changed size during iteration
a={'a':1, 'b':0, 'c':1, 'd':0}
for key in a.keys():
del a[key]
参考资料:https://www.python.org/dev/peps/pep-0234/
大概是说字典在遍历时不能进行修改,建议转成列表或集合处理。
a={'a':1, 'b':0, 'c':1, 'd':0}
for key in list(a.keys()):
del a[key]
注2:
注三:反转字典
第一种,使用压缩器:
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m.items()
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
>>> zip(m.values(), m.keys())
[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')]
>>> mi = dict(zip(m.values(), m.keys()))
>>> mi
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
第二种,使用字典推导:
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m
{'d': 4, 'a': 1, 'b': 2, 'c': 3}
>>> {v: k for k, v in m.items()}
{1: 'a', 2: 'b', 3: 'c', 4: 'd'
注四:
>>> d = {}
>>> d.update(d1)
>>> d.update(d2)
首先创建一个空字典,并使用update方法向字典中添加元素。注意,先添加的是d1,以保证后面添加的d2重复键会覆盖d1。
此方法满足了我们的要求,而且清晰明确,可是三行代码总感觉不够Pythonic。
>>> d = d1.copy()
>>> d.update(d2)