本章的主要内容是“字典”。字典是一种通过名字引用值的数据结构。这种结构类型被称为“映射”。字典是Python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但都存储在一个特定的键(key)里面。键可以是数字、字符串甚至是元组。
经验做法
- 电话号码(以及其他可能以0开头的数字)应该表示为数字字符串而不是整数。
创建字典
可以使用下面的方式创建字典:
phonebook = {'Alice':'2314', 'Beth': '9102', 'Cecil': '3258'}
字典由多个键以及其对应的值构成的对组成。每个键和它的值之间用冒号隔开。项之间用逗号隔开。而整个字典是由一对大括号括起来。
字典函数
dict函数
可以用dict函数通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典。
使用下面的代码:
>>> items = [('name','Gumby'),('age',42)]
>>> d = dict(items)
>>> d
{'age': 42, 'name': 'Gumby'}
>>> d['name']
'Gumby'
dict函数也可以通过关键字参数来创建字典。
>>> d = dict(name='Gumby',age = 42)
>>> d
{'age': 42, 'name': 'Gumby'}
基本字典操作
- len(d),返回字典中项的数量
- del d[k],删除键为k的项
- k in d 检查d中是否含有键为k的项
字典的格式化字符串
可以在每个转换说明符的%字符后面加上用圆括号括起来的键,然后后面跟上其他说明元素来格式化字符串。
使用下面的代码:
>>> phonebook = {'Alice':'2314', 'Beth': '9102', 'Cecil': '3258'}
>>> "Cecil's phone number is %(Cecil)s." % phonebook
"Cecil's phone number is 3258."
字典方法
字典的方法用的不太多。所以只列出常用的方法和说明,示例代码就不写了。
clear方法
clear方法清除字典中所有的项。修改字典本身,所以无返回值。
copy方法
copy方法返回一个具有相同键值对的新字典。对于值来说实现的是浅复制。
如果想使用深复制,可以使用copy模块中的deepcopy函数来完成。
参考下面的代码:
>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred', 'Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(c)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}
get方法
get方法在取dict的值的时候,如果指定的key不存在,不会出错。
items方法
items方法将所有的字典项以列表方式返回。包含键-值。
使用下面的代码:
>>> phonebook.items()
dict_items([('Beth', '9102'), ('Alice', '2314'), ('Cecil', '3258')])
keys方法
keys方法将字典中的键以列表的响声返回。
使用下面的代码:
>>> phonebook.keys()
dict_keys(['Beth', 'Alice', 'Cecil'])
pop方法
pop方法用于获取一个指定key的值,然后将这一项从dict中移除。
使用下面的代码:
d.pop(x)
update方法
update方法可以利用一个字典中的项更新另一个字典。即如果新字典中存在原字典不存在的项,则加入。新字典中存在原字典中已存在的项,则更新。其他不变。
使用下面的代码:
>>> d = {'a':'1'}
>>> new_d = {'a':'2','b':'3'}
>>> d.update(new_d)
>>> d
{'a': '2', 'b': '3'}
values方法
values方法以列表的形式返回字典中的值。可以包含重复的元素。