字典dict:
- key-value键值对的数据集合
- 可变的,无序的,key不重复
字典dict定义,初始化:
- d = dict() 或者 d = {}
- dict(**kwargs) 使用name = value 对初始化一个字典
- dict(iterable,**kwarg) 使用可迭代对象和name = value 对构造字典,不过可迭代对象的元素必须是一个二元结构
- dict(mapping,**kwarg) 使用一个字典构建另一个字典
- 常用定义方法:d = {‘a’:10,'b':20,'c':None,'d':[1,2,3]}
- 类方法dict.fromkeys(iterable,value)
- d = dict.fromkeys(range(5))
- d = dict.fromkeys(range(5),0)
字典元素访问:
d[key]:
返回key对应的值value
key不存在抛出KeyError异常
get(key[,default])
返回key对应的值value
key不存在返回缺省值,如果没有设置缺省值就返回None
setdefaule(ket[,default])
返回key对应的值value
key不存在,添加kv对,value设置为default,并返回default,乳沟default没有设置,缺省为None
字典增加和修改:
d[key] = value
将key对应的值修改为value
key不存在添加新的kv对
- update([other]) - > None
- 使用另一个字典的kv对更新本字典
- key不存在,就添加
- key存在,覆盖已存在的key对应的值
- 就地修改
- d.update(red = 1)
- d.update((('red',2),))
- d.update({'red':3})
字典删除:
- pop(key[,default]):
- key存在,移除它,并返回它的值
- key不存在,就返回给定的default
- defaule未设置,key不存在则抛出KeyError异常
- popitem():
- 移除并返回一个任意的键值对
- 字典empty,抛出KeyError异常
- clear():清空字典
字典遍历:
for ... in dict for k in d.keys(): for v in d.values(): for item in d.ditems():
遍历key print(d.get(k)) print(v) print(itme)
for k in d:
print(k)
python3中,keys,values,items方法返回一个类似一个生成器的可迭代对象,不会把函数的返回结果复制到内存中
字典遍历和删除:
正确做法: d = dict(a=1,b=2,c='abc')
keys = []
for k,v in d.items():
if isinstance(v,str):
for k in keys:
d.pop(k)
print(d)
字典的key:
- key的要求和set的元素要求一致:
- set的元素可以就是看做key,set可以看做dict的简化版
- hashable 可哈希才可以作为key,可以使用hash()测试