字典: 通过查找某个特定的词语(键),从而找到它的定义(值)
创建字典
由多个键及于其对应的值构成的 键—值对组成
每个键和它的值之间用冒号( : ) 隔开,项之间用逗号( , )隔开
整个字典是由一对大括号括起来
phone = {'Alice':'1234' , 'Bob':'2345' , 'Cecil':'3456'}
dict函数
通过其他映射(比如其他字典)或者(键,值)对的序列建立字典
>>> item = [('name','Gumby'),('age',42)]
>>> d = dict(items)
>>> d
{'age':42,'name':'Gumby'}
>>> d['name']
'Gumby'
dict函数也可以通过关键字来创建字典
>>> d = dict(name='Alice',age=12)
>>> d
{'age'=12,'name'='Alice'}
基本字典操作
len(d):返回d中项(键—值对)的数量
d[k] :返回关联到键k上的值
d[k]=v :将值v关联到键k上
del d[k] :删除键为k的项
k in d :检查d中是否有含有键为k的项
字典与列表的重要区别
字典的键不一定为整型数据,键可以是任意的不可变类型。
即使键起初在字典中并不存在,也可以为它赋值,这样字典就会建立新的项
字典的格式化字符串
在每个转换说明符中的%字符后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素
>>> phone
{'Alice':'1234','Bob':'2345','Cecil':'3456'}
>>> "Alice 's phone number is %(Alice)s." %phone
"Alice 's phone number is 1234
字典的方法
clear :清除字典中的所有项(原地操作)
>>> d = {}
>>> d['name'] = 'Alice'
>>> d['age'] = 12
>>> d
{'age':12,'name':'Alice'}
>>> returned_value = d.clear()
>>> d
{}
>>> print returned_value
None
copy :返回一个具有相同键—值对的新字典(浅复制)
>>> x = {'user':'admin','machines':['foo','bar','baz']}
>>> y = x.copy()
>>> y['user'] = 'mlh'
>>> y['machines'].remove('bar')
>>> y
{'user':'mlh','machines':['foo','baz']}
>>> x
{'user':'admin','machines':['foo','baz']}
当在副本中替换值的时候,原始的字典不受影响,但是如果修改了某个值,原始的字典也会改变
>>> from copy import deepcopy
>>> d = {}
>>> d['name'] = ['Alice','Bob']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['name'].append('Clive')
>>> c
{'name':['Alice','Bob','Clive']}
>>> dc
{'name':['Alice','Bob']}
fromkeys :使用给定的键建立新的字典,每个键都对应一个默认的值None
>>> {}.fromkeys(['name','age'])
{'age':None,'name':None}
get :更宽松的访问字典项的方法
>>> d = {}
>>> print d.get('name')
None
>>> d.get('name','N/A')
'N/A'
has_key :检查字典中是否含有特定的键
形式:has_key(k)
>>> d = {}
>>> d.has_key('name')
False
>>> d['name'] = 'Alice'
>>> d.has_key('name')
True
items和iteritems :将字典所有的项以列表方式返回,列表中的每一项都表示为(键,值)对的形式
返回的项没有特定的次序
但iteritems会返回一个迭代器对象而不是列表
#-----items的使用
>>> d = {'Alice':'asdf','Bob':'zxcv','Clive':'0'}
>>> d.items()
[('Alice','asdf'),('Clive',0),('Bob','zxcv')]
#-----iteritems的使用
>>> it = d.iteritems()
>>> list(it)
[('Alice','asdf'),('Clive',0),('Bob','zxcv')]
keys和iterkeys :keys将字典中的键以列表的形式返回,而iterkeys返回针对键的迭代器
pop :获得对应于给定键的值,然后将这个键-值对从字典中移除
>>> d = {'x':1,'y':2}
>>> d.pop('x')
1
>>> d
{'y':2}
popitem :弹出随机的项,
>>> d = {'Alice':'asdf','Bob':'zxcv','Clive':'0'}
>>> d.popitem()
('Alice':'asdf')
>>> d
{'Bob':'zxcv','Clive':'0'}
setdefault :能够获得与给定键相关联的值,还可以在字典中不含有给定键的情况下设定相应的键
>>> d = {}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name':'N/A'}
>>> d['name'] = 'Alice'
>>> d.setdefault('name','N/A')
'Alice'
>>> d
{'name':'Alice'}
update :利用一个字典项更新另外一个字典
>>> d = {
'title':'BAIDU',
'url':'http://www.baidu.com',
'changed':'June 12 12:23'
}
>>> x = {'title':'BAIDU'}
>>> d.update(x)
>>>d
{'title':'BAIDU','url':'http://www.baidu.com','changed':'June 12 12:23'}
values和itervalues :以列表的形式返回字典中的值(itervalues返回值的迭代器),返回值的列表中可以包含重复的元素
>>> d = {}
>>> d[1] = 1
>>> d[2] = 2
>>> d[3] = 3
>>> d.values()
[1,2,3]