字典
* 创建和使用字典 *  dict()
>>> phonebook = {'Alice': '2341', 'Beth': '9102', 'Ceil': '3258'}
>>> phonebook
{'Beth': '9102', 'Alice': '2341', 'Ceil': '3258'}
>>> phonebook['Beth']
'9102'
>>> items = [('name', 'Gumby'), ('age', 42)]
>>> d = dict(items)
>>> d
{'age': 42, 'name': 'Gumby'}
* 基本字典操作 *
 字典在很多方面与序列sequence类似
 (1), len(d) 返回d中项(键-值对)的数量;
 (2), d[k] 返回关联到键 k 上的值。
 (3), d[k] = v 将值v关联到键 k 上。
 (4), del d[k] 删除键为 k 的项。
 (5), k in d 检查d中是否有含有键为k的项。
  字典与列表的三点区别:  * 键类型 * 自动添加 * 成员资格
>>> x = []
>>> x[42] = 'hi'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> x = {}
>>> x[42] = 'hi'
>>> x
{42: 'hi'}
* 字典的格式化字符串 *
>>> "Ceil's phone number is %(Ceil)s." % phonebook
"Ceil's phone number is 3258."
* 字典方法 *
#1 clear() 方法的必要性
>>> _value = d.clear()         
>>> d
{}
>>> print _value
None
为什么这个方法有用,请看 : 
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x = {}
>>> y
{'key': 'value'}
对比
>>> x = {}
>>> y = x
>>> x['key'] = 24
>>> y
{'key': 24}
>>> x.clear()
>>> y
{}
#2 copy() 浅拷贝与深拷贝
>>> from copy import deepcopy             
>>> d = {}
>>> d['names'] = ['Alfred', 'Beth']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Beth', 'Clive']}
>>> dc
{'names': ['Alfred', 'Beth']}
#3 fromkeys() 使用给定的键建立新的字典,每个键默认对应的值为None
>>> dict.fromkeys(['name', 'age'], '(unkonw)')  
{'age': '(unkonw)', 'name': '(unkonw)'}
#4 get() 是一个更宽松的访问字典项的方法
>>> print d['name']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print d.get('name')
None
>>> print d.get('name', 'N/A')
N/A
>>> d
{'names': ['Alfred', 'Beth', 'Clive']}
>>> d['name'] = 'Eric'
>>> d
{'names': ['Alfred', 'Beth', 'Clive'], 'name': 'Eric'}
#5 has_key 检查字典是否含有给出的键 d.has_key(k), k in d 一样
>>> d = {}
>>> d.has_key('name')
False
>>> d['name'] = 'Etric'
>>> d.has_key('name')
True
#6 items 和 iteritems|items将所有的字典项以列表方式返回,后者返回迭代器
>>> d
{'name2': 'hi2', 'name': 'Etric'}
>>> d.items()
[('name2', 'hi2'), ('name', 'Etric')]
>>> it = d.iteritems()
>>> list(it)
[('name2', 'hi2'), ('name', 'Etric')]
#7 keys 和 iterkeys
#8 pop 方法用来获得对应于给定键的值
#9 popitem 方法类似于 list.pop, popitem 弹出随机项
#10 setdefault 类似于 get, 特点是:在字典中不含有给定键的情况下设定相应键值
#11 update  update 方法可以利用一个字典更新另外一个字典
>>> d
{'name2': 'hi2', 'name': 'Etric'}
>>> x = {'name' : 'python update'}
>>> d.update(x)
>>> d
{'name2': 'hi2', 'name': 'python update'}
#12 values (以列表的形式返回字典中的值)和 itervalues
>>> d
{'name2': 'hi2', 'name': 'python update'}
>>> d.values()
['hi2', 'python update']
** -- 小结 -- **
 *1 : 映射 : Python唯一内建的映射类型是字典
 *2 : 利用字典格式化字符串
 *3 : 字典的方法
下一章 : 条件,循环和其他语句