#一、使用字典 #1.字典的定义 #在python中,字典是一系列键值对,每个键都与一个值相关联,可以使用键来访问与之相关联的值, #与键相关联的值可以是数字、字符串、列表、乃至字典。可将任何Python对象用作字典中的值。 #键和值之间用逗号分隔,在字典中想存储多少个键-值都可以 #一些坦克,它们的颜色和分数都不同 tank_0={'color':'green','points':5} #color就是个键,green就是对应的值 #2.访问字典中的值 tank_0={'color':'green','points':5} print(tank_0['color']) print(tank_0['points']) #如果你消灭这个坦克,可以获得其分数 my_points=tank_0['points'] print("你获得的分数"+str(my_points)) #3.添加键-值对 #字典是一种动态结构,可随时在其中添加键-值对。 #要在tank_1中添加 横纵坐标 tank_1={ } tank_1['color']='red' tank_1['points']=10 tank_1['x_position']=0 tank_1['y_position']=25 print(tank_1) #使用字典来存储用户提供的数据或编写能自动生成大量键-值对的代码,通常需要先定一个空字典 #4.修改字典中的值 #需将tank_0的颜色改为蓝色 tank_0={'color':'green','points':5} print(tank_0['color']) tank_0['color']='blue' print("坦克0的新颜色"+tank_0['color']) #对一个以不同速度移动的坦克的位置进行追踪 #为此我们先存储该坦克的当前速度,并据此确定坦克将向右移动多远 tank_2={'color':'yellow','x_position':20,'y_position':30,'speed':'medium'} #向右移动坦克 #根据坦克当前速度决定其移动多远 if tank_2['speed']=='slow': x_increment=1 elif tank_2['speed']=='medium': x_increment=2 else: x_increment=3 tank_2['x_position']=tank_2['x_position']+x_increment print("新位置:"+str(tank_2['x_position'])) #5.删除键-值对 #用del语句删除键-值对,删除的键-值对永远消失 tank_0={'color':'green','points':5} del tank_0['points'] print(tank_0) #二、遍历字典 #1.遍历所有键-值对 user={'username':'haha','sex':'man','truename':'Tom'} for key,value in user.items(): #方法item返回的是一个键-值对列表 print(key) print(value) #即便遍历字典时,键-值对的返回顺序也与存储顺序不同。Python不关心键值的存储顺序,只跟踪键和值之间的联系 #2.遍历字典中的所有键 user={'username':'haha','sex':'man','truename':'Tom'} for key in user.keys(): #提取字典user中的所有键,并依次将他们存储到变量key中 print(key) #遍历字典是会默认遍历所有的键,因此for key in user.keys(): 可以替换为for key in user: 输出将不变 #3.按顺序遍历字典中的所有键 languages={'tom':'python','phil':'java','robin':'c','jack':'ruby'} for name in sorted(languages.keys()): print(name.title()) #4.遍历字典中的所有值 #如果你只想要字典中包含的值,可使用values()方法,它返回一个值列表,而不包含任何键 languages={'tom':'python','phil':'java','robin':'c','jack':'ruby'} for value in languages.values(): print(value.title()) #这种方法提取字典中的值,而没有考虑是否重复,当涉及大量重复项时,为剔除重复项,可使用集合set languages={'tom':'python','phil':'java','robin':'c','jack':'python'} for value in set(languages.values()): print(value.title()) #三、嵌套 #1.字典列表 #字典tank_0包含一个坦克的各种信息,但无法存储其他坦克的信息, #办法是创建一个坦克列表,其中每个坦克都是一个字典, tank_0={'color':'green','points':5} tank_1={'color':'red','points':15} tank_2={'color':'blue','points':25} tanks=[tank_0,tank_1,tank_2] for tank in tanks: print(tank) #坦克不止三个,且每个坦克都使用代码自动生成 #创建一个用于存储坦克的空列表 tanks=[ ] #创建30个绿色坦克 for tank_number in range(30): new_tank={'color':'green','points':5,'speed':'slow'} tanks.append(new_tank) #显示前5个坦克 for tank in tanks[:5]: print(tank) print("...") #显示共创建了多少坦克 print("总共"+str(len(tanks))) #2.在字典中存储列表 #drink饮料包含两方面信息:包装材料,和配料列表 drink={ 'package':'plastic', 'ingredient':['water','apple'] } print(drink) #3.在字典中存储字典 users={ 'username_1':{ 'first':'tom', 'last':'guo', 'address':'beijing' }, 'username_2':{ 'first':'jack', 'last':'li', 'address':'shanghai' } }
参考:《Python编程:从入门到实践》,作者Eric Matthes,译者袁国忠,由人民邮电出版社于2016年7月出版