在本章中,你将学习能够将相关信息关联起来的Python字典。你将学习如何访问和修改字典中的信息。鉴于字典可存储的信息量几乎不受限制,因此我们会演示如何遍历字典中的数据。另外,你还将学习存储字典的列表、存储列表的字典和存储字典的字典。
6.1一个简单的字典
alien_0={'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])
字典alien_0 存储了外星人的颜色和点数。使用两条print 语句来访问并打印这些信息,如下所示:
6.2使用字典
在Python中,字典 是一系列键—值对 。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
在Python中,字典用放在花括号{} 中的一系列键—值对表示。
键—值 对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。
6.2.1访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号内的键,
alien_0={'color':'green','points':5}
new_point=alien_0['points']
print("You just earned "+str(new_point)+" points!")
6.2.2 添加键—值对,修改字典中的值,删除键—值对
字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。
下面在字典alien_0中添加两项信息,外星人的x坐标和y坐标
#创建一个空字典
alien_0={}
*添加键-值对
alien_0['x_position']=0
alien_0['y_position']=25
#修改字典中的值
alien_0['x_position']=15
#删除键-值对
del alien_0['y_position']
#输出字典
print(alien_0)
6.3 遍历字典
6.3.1 遍历所有的键—值对
方法items()
user_0={
'username':'akashi',
'first':'akashi',
'last':'kenji',
}
for key,value in user_0.items():
print("\nKey: "+key)
print("Value: "+value)
要编写用于遍历字典的for 循环,可声明两个变量,用于存储键—值对中的键和值。对于这两个变量,可使用任何名称。
6.3.2 遍历字典中的所有键
在不需要使用字典中的值时,方法keys() 很有用。
favorite_languages={
'jen':'python',
'sarah':'c',
'akashi':'ruby',
'suga':'python',
}
friends=['jen','akashi','suga']
#也可不加keys()
for name in favorite_languages.keys():
if name in friends:
print("\nHi,"+name.title()+" ,I see your favorite language is: "+
favorite_languages[name].title()+"!")
6.3.3 按顺序遍历字典中的所有键
字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。
要以特定的顺序返回元素,一种办法是在for 循环中对返回的键进行排序。为此,可使用函数sorted() 来获得按特定顺序排列的键列表的副本:
favorite_languages={
'jen':'python',
'sarah':'c',
'akashi':'ruby',
'suga':'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title()+"'s favorite language is:"+favorite_languages
[name].title()+".")
按字母顺序排序
6.3.4 遍历字典中的所有值
如果你感兴趣的主要是字典包含的值,可使用方法values() ,它返回一个值列表,而不包含任何键。
favorite_languages={
'jen':'python',
'sarah':'c',
'akashi':'ruby',
'suga':'python',
}
print("The followed language have been metioned:\n")
for language in favorite_languages.values():
print(language.title())
通过对包含重复元素的列表调用set() ,可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。
print("The followed language have been metioned:\n")
for language in set(favorite_languages.values()):
print(language.title())
、
6.4 嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套 。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
6.4.1在列表中嵌套字典
## 创建一个用于存储外星人的空列表
aliens=[]
#range创建30个绿色外星人
for alien_number in range(30):
new_alien={'color':'green','point':5,'speed':'slow'}
aliens.append(new_alien)
#显示前5个外星人
for alien in aliens[:5]:
print(alien)
print("...")
#显示创建了多少外星人
print("Total number of aliens: "+str(len(aliens)))
6.4.2 在字典中存储列表
pizza={
'crust':'thick',
'toppings':['mushrooms','extra cheese'],
}
print("You ordered a "+pizza['crust']+"-crust pizza"
+" with the following toppings:")
for topping in pizza['toppings']:
print(topping)
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
6.4.3 在字典中存储字典
users={
'tsukishima':{
'first':'tsukishima',
'last':'kei',
'location':'wuye',
},
'akashi':{
'first':'akashi',
'last':'keiji',
'location':'xiaomu'
},
}
for username,user_info in users.items():
print("\nUsername: "+username)
full_name=user_info['first']+" "+user_info['last']
location=user_info['location']
print("\tFull name: "+full_name.title())
print("\tLocation: "+location)