Python编程快速入手——让繁琐的工作自动化 第五章学习记录
第5章 字典和结构化数据 5.1字典数据类型 像列表一样,“字典”是许多值的集合,但不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对 在代码中,字典输入时带花括号{}。
myCat={‘size’:‘fat’,‘color’:‘gray’,‘disposition’:‘loud’} myCat[‘size’] ‘fat’
‘My cat has’ + myCat[‘color’] + ‘fur.’ 'My cat hasgrayfur.
字典仍然可以用整数值作为键,就像列表使用整数值作为下标一样,但他们不必从0开始,可以是任何数字
spam={12345:‘uggage Combination’,42:‘The Answer’}
5.1.1字典与列表 与列表不同,字典中的表项是不排序的。键-值对输入的顺序并不重要。
spam={12345:‘uggage Combination’,42:‘The Answer’} spam=[‘cat’,‘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出错信息
spam={‘name’:‘Zophie’,‘age’:7} spam[‘color’] Traceback (most recent call last): File “<pyshell#15>”, line 1, in spam[‘color’] KeyError: ‘color’
5.1.2 key()、values()、items()方法 有3个字典方法,他们讲返回类似列表的值,分别对应于字典的键、值和键-值对:keys()、values()、items()。这些方法返回的值不是真正的列表,它们不能被修改,没有append()方法
spam={‘color’:‘red’,‘age’:42} for v in spam.values(): print(v)
red 42
for k in spam.keys(): print(k)
color age
for i in spam.items(): print(i)
(‘color’, ‘red’) (‘age’, 42)
for循环可以迭代每个值、键或者键-值对 注意:items()方法返回的dict_items值中,包含的是键和值的元组 如果希望通过这些方法得到一个真正的列表,就把类似列表的返回值传递给list函数
spam={‘color’:‘red’,‘age’:42} spam.keys() dict_keys([‘color’, ‘age’])
list(spam.keys()) [‘color’, ‘age’]
也可以利用多重赋值的技巧,在for循环中将键和值赋给不同的变量
spam={‘color’:‘red’,‘age’:42} for k,v in spam.items(): print(‘Key:’ + k + ‘Value:’+str(v))
Key:colorValue:red Key:ageValue:42
5.1.3检查字典中是否存在键或值 利用in和not in 操作符
spam={‘name’:‘Zophie’,‘age’:7} “name” in spam.keys() True
“Zophie” in spam.keys() False
‘color’ not in spam.keys() True
‘color’ in spam False
5.1.4get()方法 在访问一个键的值之前,检查该键是否存在于字典中 get()方法有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值
picnicItems={‘apples’:5,‘cups’:2} 'I am bringing ‘+ str(picnicItems.get(‘cups’,0))+’ cups. ’ 'I am bringing 2 cups. ’
'I am bringing ‘+ str(picnicItems.get(‘eggs’,0))+’ cups. ’ 'I am bringing 0 cups. ’
不使用get(),代码就会产生一个错误信息
picnicItems={‘apples’:5,‘cups’:2} ‘I am bringing ‘+ str(picnicItems[‘eggs’])+’ eggs.’ Traceback (most recent call last): File “<pyshell#49>”, line 1, in ‘I am bringing ‘+ str(picnicItems[‘eggs’])+’ eggs.’ KeyError: ‘eggs’
5.15 setdefault()方法 常常需要为字典中某个键设置一个默认值,当该键没有任何值时使用它
setdefault()方法提供了一种方式 传递给该方法的第一个参数,是要检查的键 第二个参数,是如果该键不存在时要设置的值 如果该键确实存在,方法就会返回键的值
spam={‘name’:‘Pooka’,‘age’:5} spam.setdefault(‘color’,‘black’) ‘black’
spam {‘name’: ‘Pooka’, ‘age’: 5, ‘color’: ‘black’}
spam.setdefault(‘color’,‘white’) ‘black’
spam {‘name’: ‘Pooka’, ‘age’: 5, ‘color’: ‘black’}
5.2漂亮打印 5.3使用数据结构对真是世界建模 5.3.1井字棋盘 5.3.2嵌套的字典和列表
小结:本章学习了字典的所有相关知识。列表和字典是这样的值,它们可以包含多个值,包括其他列表和字典。字典是有用的,因为你可以把一些项(键)映射到另一些项(值),它不像列表,质保函一系列有序的值。字典中的值是通过方括号问的,像列表一样。字典不是只能使用整数下标,而是可以用各种数据类型作为键:整型、浮点型、字符串或元组。通过将程序中的值自组织成数据结构,可以创建真实世界事物的模型。