罗列字典的常用操作,遵循艾宾浩斯记忆遗忘曲线,让知识固化,方便查询和使用。
创建dict
dict函数
dict函数可以通过其他映射,比如字典或者(key,value)
遮这样的序列对建立字典。
1 | 'name','webkong'),('age',18)] > items = [( |
或者通过关键字参数来创建
1 | 'webkong',age=18) > d = dict(name= |
如果不带参数,就会返回空字典. 和 list, tuple, str函数一样。
1 | > a = dict() |
也可以直接用字面量
1 | 'name':'webkong','age':19} > c = { |
基本字典操作
len()
返回键值对的数量
del
del a[‘name’] #删除键为name的值
in
‘name’ in a 返回 True 检查字典中是否含有键为name的项
赋值
a[‘name’] = ‘wsw’
键的类型: 字典的键是不可变类型,有可能是整型、浮点型(实型)、字符串或元组。
添加:键不存在,也可以赋值,这样字典就会建立新的项。
字典格式化字符串
1 | > info |
只要给出的键可以在字典中找到,就可以使用任意数量的转换说明符。在模板系统中非常有用。
字典方法
clear
原地操作, 清除字典中的所有项, 无返回值(或者说返回None)。
copy
返回一个具有相同键值对的新字典。这种方法实现的是浅复制,因为值本身是相同的,而不是副本。
1 | > info |
在替换值得时候,原字典不受影响, 但是如果用原地操作修改了某个值,原字典也会改变。
避免这种问题的一种方式就是深复制(deep copy)
1 | > from copy import deepcopy |
fromkeys
使用给定的键建立新的字典,每一个键默认的值是None.
1 | 'name','age']) > a = {}.fromkeys([ |
get
访问字典项的方法,在访问不存在的项时,返回None。也可以自己定义“默认值”
1 | > a |
has_key
检查字典中是否又给出的键。
1 | a.has_key('name') 相当于 k in d |
items & iteritems
items 方法将所有的字典项以列表的方式返回,list中的每一个项来自(key, value),返回时没有次序。
1 | info |
iteritems 方法和items大致相同,但是会返回一个迭代器对象。
keys & iterkeys
keys方法将字典中的键以列表的形式返回, iterkeys返回迭代器对象。
1 | > info |
pop
pop方法用来获取对应键的值,然后将这个键值对从字典中移除。
1 | > info |
popitem
popitem 类似于list.pop,但不同的是,popitem弹出的是随机项,因为字典没有最后项的概念。 若想一个接一个地移除并处理项,这个方法就很适合,不用首先获取键的列表。
1 | a.popitem() |
setdefault
setdefault可以在字典不包含给定键值对的情况下设置相应的键值。1
2
3
4
5
6
7
8
9
10
11
12 > b = {}
'name','N/A') > b.setdefault(
'N/A'
> b
{'name': 'N/A'}
'name'] = 'webkong' > b[
> b
{'name': 'webkong'}
'name','N/A') > b.setdefault(
'webkong'
> b
{'name': 'webkong'}
update
update 方法可以利用一个字典项更新另外一个字典。
1 | > a |
values & itervalues
values 方法以列表的形式返回字典的值, 返回的值可以包含重复的元素。 itervalues 返回一个迭代对象。
1 | > a |