* 创建和使用字典 * 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 : 字典的方法
下一章 : 条件,循环和其他语句