1. 字典数据类型
字典格式如下:
{'size': 'fat', 'color': 'gray', 'disposition': 'loud'},
字典的索引被称为键,键及其指被称为键值对。
1) 字典与列表
列表是有序的,字典是无序的,这是列表和字典的主要区别。所以字典不能应用切片。示例:
>>> spam = ['cats', 'dogs', 'moose'] >>> bacon = ['dogs', 'moose', 'cats'] >>> spam == bacon False >>> eggs = {'name': 'Zophie', 'species': 'cat', 'age': '8'} >>> ham = {'species': 'cat', 'age': '8', 'name': 'Zophie'} >>> eggs == ham True
如果访问字典中不存在的键将会报keyError异常。
2) keys()、values()和 items()方法
keys(),values()和items()返回类似列表的值,分别对应字典的键,值,键值对。示例:
>>> spam = {'color': 'red', 'age': 42} >>> spam.keys() dict_keys(['color', 'age']) >>> spam.values() dict_values(['red', 42]) >>> spam.items() dict_items([('color', 'red'), ('age', 42)])
使用list()方法可以将它们转成列表,示例:
>>> spam = {'color': 'red', 'age': 42} >>> list(spam.keys()) ['color', 'age']
3) 检查字典中是否存在键或值
和列表一样,可以使用in和not in字典中是否存在某个值。示例:
>>> spam = {'species':'cat','age':'8','name':'Zophie'}
>>> 'species'in spam.keys() True >>> 'species'in spam.values() False >>> 'species'in spam.items() False
>>> 'species'in spam True
如上,'species'in spam其实是'species'in spam.keys()的简写。
4) get()方法(获取指定键的值)
get()方法有两个参数:要取得其值的键;如果该键不存在,返回的备用值。如果省略第二个,那么键不存在的时候会返回None.示例:
>>> picnicItem = {'apple':'5','cup':'2'} >>> picnicItem.get('apple',0) '5' >>> picnicItem.get('eggs',0) 0 >>> print(picnicItem.get('eggs')) None
5) setdefault()方法
setdefault()方法提供了一种方式,在一行中完成这件事。传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。示例:
>>> spam = {'name': 'Pooka', 'age': 5} >>> spam.setdefault('color', 'black') 'black' >>> spam {'color': 'black', 'age': 5, 'name': 'Pooka'} >>> spam.setdefault('color', 'white') 'black' >>> spam {'color': 'black', 'age': 5, 'name': 'Pooka'}
2. 漂亮打印(pprint())
如果程序中导入 pprint 模块,就可以使用 pprint()和 pformat()函数。pprint()可以打印出排序后的键,如果希望得到漂亮打印的文本作为字符串,而不是显示在屏幕上,那就调用
pprint.pformat()。示例:
import pprint message = 'It was a bright cold day in April, and the clocks were striking\ thirteen.' count = {} for character in message: count.setdefault(character, 0) count[character] = count[character] + 1 #最后两行的结果是等价的 pprint.pprint(count) print(pprint.pformat(count))