6.1 使用字典
1.在python中,字典是一系列键值对,每个键都与一个值相关联,可以使用键来访问相应的值
2.与键相关联的值可以是数、字符串、列表乃至字典,事实上,可将任何python对象用作字典中的值
3.字典用在花括号{}中的一系列键值对表示
4.键值对是两个相关联的值,键和值之间用冒号分隔,而键值对之间用逗号分隔
alien_0 = {'color':'green'}
6.1.1 访问字典中的值
1.要获取与键相关联的值,可依次指定字典名和放在方括号内的键
alien_0 = {'color':'green'}
print(alien_0['color'])#输出结果green
2.字典中可包含任意数量的键值对
6.1.2 添加键值对
1.字典是一种动态结构,可随时在其中添加键值对
2.添加键值对,可依次指定字典名、用花括号括起的键和相关联的值
3.字典中元素的排列顺序与定义时相同,遍历的顺序与添加顺序相同
6.1.3 添加空字典
1.使用字典来存储用户提供的数据,通常需要先定义一个空字典
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)#输出结果{'color':'green'}
6.1.4 修改字典中的值
1.要修改字典中的值,可依次指定字典名、用方括号括起的键,以及与该键相关联的新值
alien_0 = {'x_position':'0','y_position':'25','speed':'medium'}
print(f"Original position:{alien_0['x_position']}")
if alien_0['speed'] == 'slow':
x_increment = 1
elif alien_0['speed'] == 'medium':
x_increment = 2
else:
x_increment = 3
alien_0['x_position'] = alien_0['x_position'] + x_increment
print(f"New position: {alien_0['x_position']}")
#输出结果:Original position:0 ;New position: 2
6.1.5 删除键值对
1.使用del语句将相应的键值对彻底删除,使用del语句时,必须指定字典名和要删除的键
2.删除的键值对会永远消失
alien_0 = {'color':'green','points':'5'}
del alien_0['points']
print(alien_0)#输出结果{'color':'green'}
6.1.6 由类似对象组成的字典
1.对于较长的列表和字典,以类似方法设置格式
fovorite_languages = {
'jen' : 'python'
'phil' : 'c'
}
6.1.7 使用get()来访问值
1.就字典而言,可使用方法get()在指定的键不存在时返回一个默认值,从而避免错误
2.get()方法的第一个参数用于指定键,是必不可少的,第二个参数为指定的键不存在时要返回的值,是可选的
alien_0 = {'color':'green','speed':'slow'}
point_value = alien_0.get('point','no point value assigned.')
print(point_value)#输出结果no point value assigned.
调用get()时,如果没有指定第二个参数且指定的键不存在,python将返回None,None表示没有相应的值
6.2 遍历字典
6.2.1 遍历所有键值对
1.使用for循环来遍历字典
2.for语句包含字典名和方法items(),它返回一个键值对列表
user_0 = {
'username':'lily'
'first':'haha'
'last':'enheng'}
for key, value in user_0.items():
print(f"\nkey: {key}")
print(f"value: {value}")
6.2.2 遍历字典中所有的键
1.在不需要使用字典中的值时,方法keys()很有用
2.方法keys()并非只能用于遍历,实际上,它返回一个列表,其中包含字典中的所有键
user_0 = {
'username':'lily'
'first':'haha'
'last':'enheng'}
for key in user_0.keys():
print(key.title())
6.2.3 按特定顺序遍历字典中的所有键
1.以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序,可使用函数sorted()来获得按特定顺序排列的键列表的副本
favorite_languages = {
'jen':'python'
'sarah':'c'
'edward':'ruby'
'phil':'python'}
for name in sorted(favorite_languages.keys()):
print(f"{name.title()},thank you for taking the poll")
6.2.4 遍历字典中的所有值
1.方法values()来返回一个值列表
favorite_languages = {
'jen':'python'
'sarah':'c'
'edward':'ruby'
'phil':'python'}
for lanhuages in favorite_languages.values():
print(languages.title())
#输出结果Python C Ruby Python
2.set()方法:对包含重复元素的列表过滤出独一无二的元素
favorite_languages = {
'jen':'python'
'sarah':'c'
'edward':'ruby'
'phil':'python'}
for lanhuages in set(favorite_languages.values()):
print(languages.title())
#输出结果Python C Ruby 是一个不重复的列表
3.可使用一对花括号直接创建集合,并在其中用逗号分隔元素,并直接输出独一无二的数据
languages = {'python','c','ruby','python'}
print(languages)
#输出结果{'c','ruby','python'}
notice:集合和字典很容易混淆,因为它们都是用一对花括号来定义的,当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典,集合不会以特定的顺序存储元素。
6.3 嵌套
1.可以在列表中嵌套字典,在字典中嵌套列表,甚至在字典中嵌套字典
6.3.1 字典列表
alien_0 = []
#创建30个绿色的外星人
for alien_number in range(30):
new_alien = {'color':'green','points':'5','speed':'lower'}
alien_0.append(new_alien)
#显示前5个外星人
for alien in alien_0[:5]:
print(alien)
#显示创建了多少个外星人
print(f"Total number of alien:{len(alien_0)}")
6.3.2 在字典中存储列表
1.在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表
favorite_languages = {
'jen':['python','ruby']
'sarah':['c']
'edward':['ruby','go']
'phil':['python','hasell'
}
for name,languages in favorite_languages.items():
print(f"\n{name.title()}'s favorote languages are:")
for language in languages:
print(f"\t{languages.title()}")
notice:列表和字典的嵌套层级不应太多
6.3.3 在字典中存储字典
users = {
'aeinstein':{
'first':'albert',
'last':'einsten',},
'mcurice':{
'first':'marie',
'last':'curie',},
}
for username, user_info in users.items():
print(f"\nUsername:{username}")
full_name = f"{user_info['first']}{user_info['last']}"
print(f"\tFull name:{full_name.title()}")