返回key对应的值value
key不存在抛出KeyError异常
get(key[,default])
d = {'a' : 200, 'b' : 300, 'c' : 400}
print(d.get('d', 333))
print(d.get('a'))
print(d)
返回key对应的值value
key不存在返回缺省值,如果没有设置缺省值就返回None
setdefault(key[,default])
d = {'a' : 200, 'b' : 300, 'c' : 400}
print(d.setdefault('d', 333))
print(d.setdefault('a'))
print(d)
返回key对应的值value
key不存在,添加kv对,value设置为default,并返回default,如果default没有设置,缺省为None
新增和修改
d[key]=value
将key对应的值修改为value
key不存在添加新的kv对
update([other])->None
使用另一个字典的kv对更新本字典
key不存在,就添加
key存在,覆盖已经存在的key对应的值
就地修改
d={}
d['a']=1
print(d)
d.update(red=1)
print(d)
d.update({'red':3})
print(d)
删除
pop(key[,default])
d = {'a' : 200, 'b' : 300, 'c' : 400}
d.pop('a')
key存在,移除它,并返回它的value
key不存在,返回给定的default
default未设置,key不存在则抛出KeyError异常
popitem()
d = {'a' : 200, 'b' : 300, 'c' : 400}
d.popitem()
移除并返回一个任意的键值对
字典为empty,抛出KeyError异常
clear()
清空字典
遍历
1、遍历Key
d = {'a' : 200, 'b' : 300, 'c' : 400}
for k in d:
print(k)
for k in d.keys():
print(k)
2、遍历Value
d = {'a' : 200, 'b' : 300, 'c' : 400}
for v in d.values():
print(v)
for k in d.keys():
print(d[k])
print(d.get(k))
3、遍历Item
d = {'a' : 200, 'b' : 300, 'c' : 400}
for item in d.items():
print(item)
print(item[0],item[1])
for k,v in d.items():
print(k,v)
d = {'a' : 200, 'b' : 300, 'c' : 400}
for k, _ in d.items():
print(k)
for _, v in d.items():
print(v)
Python3中,keys、values、items方法返回一个类似一个生成器的可迭代对象
Dictionaryview对象,可以使用len()、iter()、in操作
字典的entry的动态的视图,字典变化,视图将反映出这些变化
keys返回一个类set对象,也就是可以看做一个set集合。如果values都可以hash,那么items也可以看做是类set对象
Python2中,上面的方法会返回一个新的列表,立即占据新的内存空间。所以Python2建议使用
iterkeys、itervalues、iteritems版本,返回一个迭代器,而不是返回一个copy
遍历与删除
#错误的做法
d = dict(a = 1, b = 2, c = 3)
for k, v in d.items():
print(d.pop(k))
在使用keys、values、items方法遍历的时候,不可以改变字典的size
while len(d):
print(d.popitem())
上面的while循环虽然可以移除字典元素,但是很少使用,不如直接clear。
#for循环正确删除
d = dict(a = 1, b = 2, c = 3)
keys = []
for k, v in d.items():
keys.append(k)
for k in keys:
d.pop(k)
key
字典的key和set的元素要求一致
set的元素可以就是看做key,set可以看做dict的简化版
hashable可哈希才可以作为key,可以使用hash()测试
使用key访问,就如同列表使用index访问一样,时间复杂度都是O(1),这也是最好的访问元素的方式