字典dict
介绍
- key-value键值对的数据集合
- 是可变的、无序的、key具有唯一性
字典创建
- d = dict()
- d = {}
- Dict(**kwargs) 使用name=value初始化一个字典
字典访问
d[key]
- 返回key对应的value
- key不存在抛出keyError异常
get(key[, default])
- 返回key对应的value
- key不存在返回默认值,如果没有default返回None
- get方法不会抛异常
setdefault(key[, default])
- 返回key对应的value
- key不存在,则添加kv对,value为default值
字典增加和修改
d[key] = value
- 将key对应的值修改为value
- key不存在添加新的键值对
update([other]) —> None
- 使用另一个字典的键值对更新本字典
- key不存在,就添加
- key存在,覆盖已存在的key对应的value
- 原处修改
字典删除
pop(key[, default])
- key存在,移除,并返回它的value
- key不存在,返回给定的default
- default未设置,key不存在则抛出keyError
popitem()
- 移除并返回一个任意的键值对
- 字典为空,抛出keyError
clear()
- 清空字典
字典删除
del语句
- del d[‘c’]
- del本质上删除的是一个对象的引用
字典遍历
for … in dict
- 遍历key
for k in d1:print(k)for k in d.keys():print(k)
- 遍历key
- 遍历value
for v in d.values():print(v)for v in d:print(d.get(v))
遍历键值对
```python for item in d.items(): print(item) # 返回值为元组
for k,v in d.items() # k,v 可使用结构方式 print(k,v) # 返回k或者v
-总结- python3中,keys/values/items方法返回一个可迭代对象,不会将结果保存在内存中- python2中,上面的方法会返回一个新的列表,占据新的内存,所以python2中建议使用iterkeys、itervalues,会返回一个迭代器<a name="c4f2cce0"></a>### 字典的key- key的要求必须为可hash<a name="141aa141"></a>### 缺省字典defaultdict-Collections.defaultdict([default_factory[,...]])- 第一个参数是default_factory,缺省是None,它提供了一个初始化函数,当key不存在,这个工厂函数来生成key对应的value```pythonfrom collections import defaultdictd1 = {}d2 = defaultdict(list) # 创建缺省字典,如果key不存在,则生成k对应的空列表for k in "abcde":for v in range(5):if k not in d1.keys():d1[k] = []d1[k].append(v)print(d1)for k in "mnopq":for v in range(3):d2[k].append(v) # 相当于调用缺省字典的工厂函数判断k是否存在,如果不存在则创建键值对,并添加vprint(d2)
顺序字典orderedDict
collections.OrderedDict([items])
有序字典
from collections import OrderedDict od = OrderedDict() od[‘apple’] = 3 od[‘orange’] = 4 od[‘pear’] = 1 od[‘banabna’] = 2 od OrderedDict([(‘apple’, 3), (‘orange’, 4), (‘pear’, 1), (‘banabna’, 2)]) ```
