相关文章链接:
python编程从入门到实践第四章——操作列表python编程从入门到实践第五章——if语句
python编程从入门到实践第七章——用户输入和while循环
python编程从入门到实践第八章——函数
python编程从入门到实践第九章——类
python编程从入门到实践第十章——文件和异常
6.1 一个简单的字典
alien_0 ={'color':'green','points':'5'}
print(alien_0['color'])
print(alien_0['points'])
#green
#5
6.2 使用字典
字典是一系列健值对。每个键都与一个值相关联。
在Python中,字典用放在花括号的({})中的一系列键值对表示。
键值对是两个相关联的值。指定键时,python将返回与之相关联的值。键与值之间用冒号分隔,而键值对之间用逗号分隔。
6.2.1 访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号内的键。
alien_0 = {'color':'green'}
print(alien_0['color'])
#green
字典中可以包含任意数量的键值对。
6.2.2 添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名、用方括号括起来的键和相关联的值。
alien_0 = {'color':'green','points':'5'}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
#{'color':'green','points':'5'}
#{'color':'green','points':'5','x_position':'0','y_position':'25'}
注意:字典元素的排列顺序与定义时相同。
6.2.3 先创建一个空字典
在空字典中添加键值对有时候可提供便利。可先使用一对空花括号定义一个字典,再分行添加各个键值对。
alien_0 = {}
alien_0 = ['color':'green']
alien_0 = ['points':'5']
print(alien_0)
#{'color':'green','points':'5'}
使用字典来存储用户提供的数据或在编写能自动生成大量键值对的代码时,通常需要先定义一个空字典。
6.2.4 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起来的键,以及与该键相关联的新值。
alien_0 = {'color':'green'}
print(f"The alien is {alien_0['color]}.")
alien_0['color'] = 'yellow'
print(f"The alien is now {alien_0['color']}")
#The alien is green.
#The alien is now yellow
6.2.5 删除键值对
对于字典中不再需要的信息,可使用del语句将相应的键值对彻底删除。使用del语句时,必须指定字典名和需要删除的键。
alien_0 = {'color':'green','points':'5'}
print(alien_0)
del alien_0['points']
print(alien_0)
#{'color':'green','points':'5'}
#{'color':'green}
注意:删除的键值对会永远消失。
6.2.6 使用get()来访问值
如果指定的键不存在就会出错,可使用get()在指定的键不存在时返回一个默认值。
方法get()的第一个参数用于指定键,是必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的。
alien_0 = {'color':'green','speed':'slow'}
point_value = alien_0.get('points','No point value assigned.')
print(point_value)
#No point value assigned.
注意:调用get()时,如果没有指定第二个参数且指定的键不存在,Python将返回值None,这个特殊值表示没有相应的值。None并非错误,而是一个表示所需值不存在的特殊值。
6.3 遍历字典
6.3.1 遍历所有键值对
可使用for循环来遍历整个字典:
user_0 = {'username':'enemy','first':'enrico','last':'fermi'}
for a,b in user_0.items():
print(f"\nKey:{key}")
print(f"Value:{value}")
#Key:username
#Value:efemi
#Key:first
#Value:enrico
#Key:last
#Value:fermi
for语句的第二部分包含字典名和方法items(),它返回一个键值对列表。
6.3.2 遍历字典中的所有键
在不需要使用字典中的值时,方法keys()很有用。
favorite_languages = {'jen':'Python','saeah':'C','Edward':'ruby','Phil':'python'}
for name in favorite_language.keys():
print(name.title())
#Jen
#Sarah
#Edward
#Phil
方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键。
6.3.3 按特定顺序遍历字典中的所有键
使用函数sorted()来获的按特定顺序排列的键列表的副本:
favorite_languages = {'jen':'Python','saeah':'C','Edward':'ruby','Phil':'python'}
for name in sorted(favorite_language.keys()):
print(f"{name.title()},thank you for taking poll.")
#Jen,thank you for taking poll.
#Edward,thank you for taking poll.
#Phil,thank you for taking poll.
6.3.4 遍历字典中的所有值
可使用values()来返回一个值列表,不包含任何键。
favorite_languages = {'jen':'Python','saeah':'C','Edward':'ruby','Phil':'python'}
for language in favorite_language.values():
print(language.title())
#Python
#C
#Ruby
#Python
这种做法提取字典中的所有的值,而没有考虑是否重复。为剔除重复项,可使用集合(set)。集合中的每个元素都必须是独一无二的。通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。
注意:可使用一对花括号直接创建集合,并在其中用逗号分隔元素:
languages = {'python','ruby','python','c'}
print(languages)
#{'python','ruby','python','c'}
集合和字典很容易混淆,因为它们都是用一对花括号定义的。当花括号内没有键值对时,定义的很可能是集合。不用于列表和字典,集合不会以特定的顺序存储元素。