第六章 字典
在Python中,字典是一系列的 键-值对 。每一个键都与一个值相关联,你可以通过键来访问相关联的值。与键相关联的值可以是数字,字符串,列表乃至字典。任何值都可以作为字典中的值。
①使用和访问字典的键值对
0.字典名={‘键0’:‘值0’,‘键1’:‘值1’,‘键2’:‘值2’}*
键值之间用冒号分隔开,而键值对之间用逗号分隔。要获取与键相关联的值,可以指定字典名和放在花括号内的键。(有没有感觉像C语言的指针 0.0 >.< )
alien_0={'color':'green','point':'5'}
print(alien_0['color'])
print(alien_0['point'])
new_point=alien_0['point']
print("You got "+str(new_point) + ' points.')
green
5
You got 5 points.
1. 添加键值对
字典是一种动态结构,可随时添加键值对。要添加键值对,可依次指定字典名,用方括号括起的键和相关联的值。(Python不关心键值对的添加顺序问题,只关心键值对之间的关联)
alien_0={'color':'green','point':'5'}
alien_0['x_position']=13
alien_0['y_position']=14
print(alien_0)
#输出:
{'color': 'green', 'point': '5', 'x_position': 13, 'y_position': 14}
2. 先创建一个空字典
alien_0={}
alien_0['color']='green'
alien_0['point']=5
print(alien_0)
#输出:
{'color': 'green', 'point': 5}
3. 修改空字典
本质就是覆盖键关联的值
alien_0={'color':'green','point':'5'}
alien_0['color']='yellow'
print(alien_0)
#输出:
{'color': 'yellow', 'point': '5'}
alien_0={'color':'green','x_position':0,'speed':'medium'}
print('original_position: '+str(alien_0['x_position']))
if alien_0['speed'] == 'slow':
x_increase = 1
elif alien_0['speed'] == 'medium':
x_increase = 2
elif alien_0['speed'] == 'fast':
x_increase = 3
alien_0['x_position'] = x_increase + alien_0['x_position']
print('new_position: '+str(alien_0['x_position']))
#####
original_position: 0
new_position: 2
4. 删除键值对
del 字典名[‘键’]
dict.clear() # 清空字典
del dict # 删除字典
del dict,但这会引发一个异常,因为用执行 del 操作后字典不再存在:
alien_0={'color':'green','x_position':'5','speed':'medium'}
print(alien_0)
del alien_0['speed']
print(alien_0)
#
{'color': 'green', 'x_position': '5', 'speed': 'medium'}
{'color': 'green', 'x_position': '5'}
注意:删除的键值对永远消失了
5. 有类似对象组成的字典
competitors={
'theshy':'wansn',
'feaker':'daijnu',
'jacklove':'zhujail'
}
print('theshy '.title()+'is ' +competitors['theshy']+"'s idol!")
②遍历字典
1. 遍历键值对
方法:for key,value in competitors.items():
键 ,值 都要带上,并且 in 字典名 .items():
print(key)
print(value )
competitors={
'theshy':'wansn',
'feaker':'daijnu',
'jacklove':'zhujail'
}
for key,value in competitors.items():
print('key:'+key)
print('value:'+value)
key:theshy
value:wansn
key:feaker
value:daijnu
key:jacklove
value:zhujail
2. 遍历字典所有的键
方法:for key in competitors.keys():
键 要带上,并且 in 字典名 .keys():
print(key)
competitors={
'theshy':'wansn',
'feaker':'daijnu',
'jacklove':'zhujail'
}
for key in competitors.keys():#for key in competitors:
print(key)
#
theshy
feaker
jacklove
按顺序遍历字典中所有的键
sorted(字典名.xxxx,reverse = True)
competitors={
'theshy':'wansn',
'feaker':'daijnu',
'jacklove':'zhujail'
}
for key in sorted(competitors.keys()):
print(key.title())
for key in sorted(competitors.keys(),reverse=True):
print(key.title())
##
Feaker
Jacklove
Theshy
Theshy
Jacklove
Feaker
2. 遍历字典所有的值
类比,不赘述了。(顺序遍历)
可自行验证下面代码的输出。
competitors={
'theshy':'wansn',
'feaker':'daijnu',
'jacklove':'zhujail'
}
for value in competitors.values():
print(value.title())
for value in sorted(competitors.values()):
print(value.title())
for value in sorted(competitors.values(),reverse=True):
print(value.title())
③嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为之存储在字典中,这称为嵌套。
1.在列表中存储字典
含列表的字典
alien_0={'color':'green','point':5}
alien_1={'color':'yellow','point':10}
alien_2={'color':'red','point':15}
aliens=[alien_0,alien_1,alien_2]
print(aliens)
for alien in aliens:
print(alien)
2.在字典中存储列表
competitors={
'theshy':['wansn','daijnu','zhujail'],
'feaker':['daijnu','zhujail'],
'jacklove':'zhujail'
}
for x in competitors:
print(x.title()+'s fans are :')
print(competitors[x])
Theshys fans are :
['wansn', 'daijnu', 'zhujail']
Feakers fans are :
['daijnu', 'zhujail']
Jackloves fans are :
zhujail
3.在字典中存储字典
个人认为:字典中的字典的一个功能是:存储某个元素的特征。比如下例中,字典中的字典,为两个选手。而字典中的字典中存储的键值对则是选手的信息。
确保,字典中的字典’competitors_X的元素键相同,输出相同。
LOL={
'competitors_1':{
'name':'theshy',
'loacation':'LPL',
},
'competitors_2':{
'name':'jacklove',
'loacation':'LPL',
},
}
for dict_x,values in LOL.items():
message = values['name'].title() + " plays in " + values['loacation']+'.'
print(message)
Theshy plays in LPL.
Jacklove plays in LPL.