dict函数
items = [('name', 'blue'), ('age', 42)]
d = dict(items)
d
{'age': 42, 'name': 'blue'}
d =dict(name='blue', age=42)
d
{'age': 42, 'name': 'blue'}
len(d)返回d中项(键-值对)的数量
d[k]返回关联到键k上的值
d[k] = v 将值v关联到键k上
del d[k]删除键为k的项
k in d 检查d中是否有含有键为k的项(注意此方法只能检查key,不能检查value)
字典的格式化字符串
>>> phonebook ={'green':'9120', 'blue': '2301', 'red': '3374'}
>>> "red's phone number is %(red)s" % phonebook
"red's phone number is 3374"
字典方法
clear 方法清除字典中的所有项,无返回值(或者说返回值为None)
>>> d = {}
>>> d['name'] = 'green'
>>> d['age'] = 42
>>> d
{'age': 42, 'name': 'green'}
>>> returned_value = d.clear()
>>> d
{}
>>> print returned_value
None
copy方法返回一个具有相同键-值对的新字典(这个方法是浅复制)
>>> x = {'username': 'admin', 'machines':['foo', 'ban']}
>>> y = x.copy()
>>> y['username'] = 'mlh'
>>> y['machines'].remove('ban')
>>> y
{'username': 'mlh', 'machines': ['foo']}
>>> x
{'username': 'admin', 'machines': ['foo']}
>>> from copy import deepcopy #深复制
>>> d = {}
>>> d['names'] = ['green', 'blue']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('clive')
>>> c
{'names': ['green', 'blue', 'clive']}
>>> d
{'names': ['green', 'blue', 'clive']}
>>> dc
{'names': ['green', 'blue']}
>>>
fromkeys方法使用给定的键建立新的字典,每个键的默认值为None
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
>>> d
{'names': ['green', 'blue', 'clive']}
>>> d.fromkeys(['name', 'age'])
{'age': None, 'name': None}
>>> d.fromkeys(['name','age'], '(unknown)')
{'age': '(unknown)', 'name': '(unknown)'}
>>> d
{'names': ['green', 'blue', 'clive']}
get方法是一个更宽松的访问 字典项的方法,一般来说访问字典里不存在的键时会报错
>>> d = {}
>>> print d['name']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print d.get('name') #使用get时没有任何异常,而得到了None值,还可以自定义默认值,替换None
None
>>> d.get('name','N/A')
'N/A'
>>> d['name'] = 'blue' # 如果键存在,get用起来就像普通的字典查询一样
>>> d.get('name')
'blue'
>>>
has_key方法可以检查字典中是否含有给出的键。
>>> d = {}
>>> d.has_key('name')
False
>>> d['name'] = 'blue'
>>> d.has_key('name')
True
items和iteritems
item方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)。但是
项返回时并没有特殊的顺序。
items 和iteritems
items方法是将所有的字典项一列表方式返回这些列表项中的每一项都来自于(键,值)。
但是项在返回时并没有特殊的顺序。
>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'span': 0}
>>> d.items()
[('url', 'http://www.python.org'), ('span', 0), ('title', 'Python Web Site')]
iteritems方法的作用大致相同,但是返回结果是一个生成器对象而不是一个列表:
>>> d.iteritems()
<dictionary-itemiterator object at 0x7f4e72000470>
>>> it = d.iteritems()
>>> it
<dictionary-itemiterator object at 0x7f4e720004c8>
>>> list(it)
[('url', 'http://www.python.org'), ('span', 0), ('title', 'Python Web Site')]
>>>
keys和iterkeys方法将字典中的键以列表形式返回,iterkeys返回的是针对键的生成器。
pop方法用来获取对应于给定键的值,然后将这个键-值对从字典中移除。
>>> d
{'url': 'http://www.python.org', 'span': 0, 'title': 'Python Web Site'}
>>> d.pop('span')
0
>>> d.pop('title')
'Python Web Site'
>>> d
{'url': 'http://www.python.org'}
>>>
popitem方法会随机弹出字典中随机的项,
>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'span': 0}
>>> d
{'url': 'http://www.python.org', 'span': 0, 'title': 'Python Web Site'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d.popitem()
('span', 0)
>>> d.popitem()
('title', 'Python Web Site')
>>> d.popitem() #字典为空时会报KeyError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
>>>
setdefault方法在某种程度类似于get方法,就是能够获得与给定键相关联的值,除此之外,
setdefault还能在字典中不含有给定键的情况下设定相应的键值。
>> d = {}
>>> d.setdefault('name','liu')
'liu'
>>> d
{'name': 'liu'}
>>> d.setdefault('name2', 'zhao')
'zhao'
>>> d
{'name2': 'zhao', 'name': 'liu'}
>>> d
{'name2': 'zhao', 'name': 'liu'}
>>> d['name'] = 'xing'
>>> d
{'name2': 'zhao', 'name': 'xing'}
>>> d.setdefault('name', 'liu')
'xing'
>>> d
{'name2': 'zhao', 'name': 'xing'}
>>>
>>> d = {}
>>> print d.setdefault('name')
None
>>>
update方法可以利用一个字典更新另一个字典:
>>> d = {
... 'title': 'Python Web Site',
... 'url': 'http://www.python.org',
... 'changed': '2013 08 17'
... }
>>> x = {'title': 'Python language Website'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'changed': '2013 08 17', 'title': 'Python language Website'}
>>>
values和itervalues