概述
第六章 字典
- 6.1 一个简单的字典
- 6.2 使用字典
- 6.2.1 访问字典中的值
- 6.2.2 添加键值对
- 6.2.3 先创建一个空字典
- 6.2.4 修改字典中的值
- 6.2.5 删除键值对
- 6.2.6 由类似对象组成的字典
- 6.2.7 使用get()来访问值
- 6.3 遍历字典
- 6.3.1 遍历所有键值对
- 6.3.2 遍历字典中的所有键
- 6.3.3 按特定顺序遍历字典中的所有键
- 6.3.4 遍历字典中的所有值
- 6.4 嵌套
- 6.4.1 字典列表
- 6.4.2 在字典中存储列表
- 6.4.3 在字典中存储字典
6.1 一个简单的字典
输入:
# 6.1 一个简单的字典
alien_0 = {'color':'green','points':5} #存储外星人的颜色和分数
print(alien_0['color'])
print(alien_0['points'])
输出:
green
5
6.2 使用字典
字典是一系列键值对。每个 键 与 一个值相关联,可以使用键来访问相关联的值。
与键关联的值可以是 数、字符串、列表乃至字典。可将任何Python对象用作字典中的值。
alien_0 = {'color':'green','points':5}
键值对,键和·值之间用冒号分隔,而键值对之间用逗号分隔。
在字典中,想存储多少个键值对都可以。
6.2.1 访问字典中的值
输入:
alien_0 = {'color':'green'} #依次指定 字典名 和 放在方括号内的键 与 值
print(alien_0['color'])
输出:
green
下面访问alien_0的颜色和分数。
alien_0 = {'color':'green','points':5} #定义字典
new_points = alien_0['points'] #获取值赋值给变量
print(f"You just earned {new_points} points!") #打印消息
You just earned 5 points!
6.2.2 添加键值对
alien_0 = {'color':'green','points':5}
print(alien_0)
alien_0['x_position'] = 0 # 新增x坐标
alien_0['y_position'] = 25 # 新增y坐标
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 修改字典中的值
案例1:将外星人绿色变成黄色
# 将一个外星人从绿色改成黄色
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.
案例2:外星人移动速度
# 外星人移动速度
alien_0 = {'x_position':0, 'y_position':25, 'speed':'medium'}
print(f"Original x_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 x_position:{alien_0['x_position']}")
Original x-position: 0
New x-position: 2
6.2.5 删除键值对
可使用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 由类似对象组成的字典
针对多个对象,同类信息而言。
输入:
# 由类似对象组成的字典
# 键(被调查者姓名) 值(被调查者语言)
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python', #最后一行键值对后面加上逗号,为以后在下一行添加键值对做好准备
}
#右花括号 需要 缩进四个空格
# 给定调查者的名字sarah,可使用这个字典轻松获悉他喜欢的语言
language =
favorite_languages['sarah'].title()
print(f"Sarah's favorite language is {language}.")
输出:
Sarah's favorite language is C.
6.2.7 使用get()来访问值
当指定的键不存在时,应考虑使用方法get(),而不使用方括号表示法。
错误方式:
alien_0 = {'color':'green','speed':'slow'}
print(alien_0['points'])
正确方式:
alien_0 = {'color':'green','speed':'slow'}
point_value = alien_0.get('points','No point value assigned.')
print(point_value)
结果:
No point value assigned.
6.3 遍历字典
可仅仅遍历字典的所有键值对,也可仅遍历键或值。
6.3.1 遍历所有键值对
方法items()。
例1:遍历一个新字典,存储一名用户的用户名、名、姓。
user_0 = {
'username': 'efermi', #用户名
'first': 'enrico', #名
'last': 'femi', #姓
}
# 使用for in循环
for key,value in user_0.items(): # key用于存储键,value用于存储值
print(f"nKey:{key}")
print(f"Value:{value}")
Key:username
Value:efermi
Key:first
Value:enrico
Key:last
Value:femi
例2:遍历一个新字典,存储不同人的同一种信息。
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
# 使用for in循环
for name,language in favorite_languages.items(): # key用于存储键,value用于存储值
print(f"{name.title()}'s favorite language is {language.title()}.")
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.
6.3.2 遍历字典中的所有键
方法keys()。
案例1:遍历字典favorite_languages,将每个被调查者的名字都打印出来。
# 遍历键 案例1
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
# 使用for in循环
for name in favorite_languages.keys(): # name用于存储键
print(name.title())
Jen
Sarah
Edward
Phil
案例2:遍历字典favorite_languages,将每个被调查者的名字都打印出来。但当名字为指定朋友的名字时候,打印一条消息,指出其喜欢的语言。
# 遍历键 案例2
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
friends = ['phil','sarah']
for name in favorite_languages.keys():
print(f"Hi {name.title()}.")
if name in friends:
language = favorite_languages[name].title()
print(f"t{name.title()},I see you love {language}!")
每个人的名字都会被打印,但只对朋友打特殊消息。
Hi Jen.
Hi Sarah.
Sarah,I see you love C!
Hi Edward.
Hi Phil.
Phil,I see you love Python!
当然,也可以使用keys来确定某人是否接受了调查。
# 下面代码确定Erin是否接受了调查
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
if
'erin' not in favorite_languages.keys():
print("Erin,please take our poll!")
Erin,please take our poll!
6.3.3 按特定顺序遍历字典中的所有键
利用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.")
对字典方法keys()的结果调用了函数sorted()。key 参数可以自定义排序规则
Edward,thank you for taking the poll.
Jen,thank you for taking the poll.
Phil,thank you for taking the poll.
Sarah,thank you for taking the poll.
6.3.4 遍历字典中的所有值
方法values()返回所有值列表,不包含任何键。
例1:不能剔除重复项
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())
这条for语句提取字典中的每个值,并将其依次赋给变量language。
The following languages have been mentioned:
Python
C
Ruby
Python
例2:可剔除重复项
使用调用set()对列表中的值进行剔除重复项。
favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
print(language.title())
结果是一个不可重复的值列表。
The following languages have been mentioned:
Ruby
C
Python
6.4 嵌套
嵌套定义:一系列字典存储在列表中,或将列表作为值存储在字典中。
可 列表中嵌套字典、字典中嵌套列表、甚至字典中嵌套字典。
6.4.1 字典列表
1、创建一个外星人列表,其中每个外星人都是一个字典,包含有关该外星人的各种信息。
alien_0 = {'color':'green','points':5} #字典alien_0
alien_1 = {'color':'yellow','points':10} #字典alien_1
alien_2 = {'color':'red','points':15} #字典alien_2
aliens = [alien_0,alien_1,alien_2] #将所有字典都存储到一个名为aliens的列表中。
for alien in aliens:
# 遍历这个列表,最终打印出来
print(alien)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
2、使用range()生成重复的30个外星人字典
# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人。
for alien_number in range(30):
new_alien = {'color':'green','points':5,'speed':'alow'}
aliens.append(new_alien)
#显示前5个外星人
for alien in aliens[:5]:
print(alien)
print("...")
#显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")
{'color': 'green', 'points': 5, 'speed': 'alow'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
...
Total number of aliens: 30
3、修改列表中字典
使用for和if语句来修改前三名外星人的颜色。将前三名外星人修改成黄色、速度中等且值10分。
# 创建30个绿色的外星人。
for alien_number in range(30):
new_alien = {'color':'green','points':5,'speed':'alow'}
aliens.append(new_alien)
for alien in aliens[:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
# 显示前5个外星人
for alien in aliens[:5]:
print(alien)
print("...")
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
添加一个elif代码块,将前三名黄色外星人改为移动速度快且值15分的红色外星人,如下所示:
# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人。
for alien_number in range(30):
new_alien = {'color':'green','points':5,'speed':'alow'}
aliens.append(new_alien)
for alien in aliens[:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
for alien in aliens[:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
elif alien['color'] == 'yellow':
alien['color'] = 'red'
alien['speed'] = 'fast'
alien['points'] = '15'
# 显示前5个外星人
for alien in aliens[:5]:
print(alien)
print("...")
Total number of aliens: 30
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
{'color': 'green', 'points': 5, 'speed': 'alow'}
6.4.2 在字典中存储列表
存储披萨的两方面信息:外皮类型 crust 和配料列表 toppings。
输入:
# 存储所点披萨的信息
pizza = {
'crust': 'thick', #外皮类型
'toppings':['mushrooms','extra cheese'], #配料列表
}
# 概述所点的披萨
print(f"You ordered a {pizza['crust']}-crust pizza"
"with the following toppings:")
for topping in pizza['toppings']:
print("t" + topping)
输出:
You ordered a thick-crust pizzawith the following toppings:
mushrooms
extra cheese
遍历字典,与每个被调查者相关联的都是一个语言列表,而不是一种语言。
输入:
favorite_languages = {
'jen':['python','ruby'],
'sarah':['c'],
'edward':['ruby','go'],
'phil':['python','haskell'],
}
for name, languages in favorite_languages.items():
print(f"n{name.title()}'s favorite languages are:")
for language in languages:
print(f"t{language.title()}")
输出:
Jen's favorite languages are:
Python
Ruby
Sarah's favorite languages are:
C
Edward's favorite languages are:
Ruby
Go
Phil's favorite languages are:
Python
Haskell
6.4.3 在字典中存储字典
用户名‘aeinstein’和‘mcurie’作为两个键;与每个键相对应关联的值都是一个字典,其中包括用户的名、姓和居住地。
# 字典存储字典
users = {
'aeinstein' : {
'first': 'albert',
'last' : 'einstein',
'location' : 'princeton',
},
'mcurie' : {
'first' : 'marie',
'last' : 'curie',
'location' : 'paris',
},
}
for username,user_info in users.items(): #分别将 键 和 值字典 赋给两个变量 username 和user_info
print(f"nUsername:{username}")
#变量user_info包括三个键first、last、location
full_name = f"{user_info['first']}{user_info['last']}"user_info
location = user_into['location']
print(f"tFull name:{full_name.title()}")
print(f"tLocation:{location.title()}")
Username: aeinstein
Full anme: Albert Einstein
Location : Princeton
Username: mcurie
Full name: Marie Curie
Location:Paris
最后
以上就是飞快身影为你收集整理的Python编程从入门到实践(第2版)第六章 字典6.1 一个简单的字典6.2 使用字典6.3 遍历字典6.4 嵌套的全部内容,希望文章能够帮你解决Python编程从入门到实践(第2版)第六章 字典6.1 一个简单的字典6.2 使用字典6.3 遍历字典6.4 嵌套所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复