本节我们学习Python中唯一内建的数据类型——字典。
字典的由键-值对组成,键可以是任意的不可变类型。而且键必须是唯一的,值可以不唯一。字典的意义在于通过键快速的找到对应的值。
字典的创建
dict函数
通过其他映射或键值对的序列创建字典。
>>>items=[('product','pen'),('price',3)]
>>>d1=dict(items)
>>>d1
{'product':'pen', 'price':3}
基本的字典操作
包括len(d),del d[i]以及k in d等常见操作,其中k in d中查找的是键而不是值。当键在字典中不存在时,会自动在字典中建立新的项。
字典的格式化字符串
在每个转换说明符中的%后加上键。
>>>"the pen is %(price)d dollars" % d1
"the pen is 3 dollars"
字典方法
clear
该操作清除字典中的所有项,无返回值。
>>>d1.clear()
>>>d1
{}
copy
返回一个具有相同键值对的新字典,它实现的是浅复制操作(值不是副本),当在副本中替换值时,原字典不变,若原地修改某个值,则原始字典也会改变。
>>>x={‘username’:‘admin’,‘machines’:[‘foo’,‘bar’,‘baz’]}
>>>y=x.copy()
>>>y[‘username’]=‘dxk’
>>>y[‘machines’].remove(‘bar’)
>>>y
{‘username’:‘dxk’,‘machines’:[‘foo’,‘baz’]}
>>>x
{‘username’:‘admin’,‘machines’:[‘foo’,‘baz’]}
为了避免这个问题,可以使用深复制,其中包括值也是副本。
>>>from copy import deepcopy
>>>z=deepcopy(x)
>>>z[‘username’]=‘dxk’
>>>z[‘machines’].remove(‘bar’)
>>>z
{‘username’:‘dxk’,‘machines’:[‘foo’,‘baz’]}
>>>x
{‘username’:‘admin’,‘machines’:[‘foo’,‘bar’,‘baz’]}
fromkeys
使用给定的键建立新的字典,每个值默认为None,也可以自己提供默认值。
>>>{}.fromkeys([‘name’,‘age’])
{‘age’:None,‘name’:None}
get
访问字典的某项。
>>>d={‘name’:‘dxk’}
>>>d.get(‘name’)
‘dxk’
has_key
检查字典中是否有特定的键。
>>>d.has_key(‘name’)
Flase
items和iteritems
items方法将字典所有的项以列表的形式返回,列表中的每一项都表示为键值对的形式。
>>>d.items()
[‘name’:‘dxk’]
iteritems的作用和items相似,只不过它返回的是迭代器对象
popitem
随机弹出列表中的一个项。
update
利用一个字典更新另外一个字典。 提供的字典中的项添加到旧的字典中,若有相同的键会进行覆盖。