目录
一、使用字典
二、遍历字典
???????
一、使用字典
在python中,字典是一系列键值对。每个键都与一个值相关联,可用键来访问值。与键相关联的值可以是数、字符串、列表乃至字典,可将任何python对象用作字典中的值。
字典用花括号{ }来表示,其中包含一系列键值对。键和值之间用冒号:分割,键值对之间用逗号,分割。
alien_0={'color':'green'} #color为键,green为与之相关联的值
1.访问字典中的值
要获取与键相关联的值,可依次指定字典名和键(放在方括号中)
alien_0={'color':'green','points':'5'}
print(alien_0['color'])
new_points=alien_0['points'] #从字典中获取与键points相关联的值,并赋值给变量
print(f"You just earn {new_points} points.")
green
You just earn 5 points.
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}
3.先创建一个空字典
先用花括号建一个空字典{ },再添加键值对。
alien_0 = {} #先建空字典
alien_0['color']='green' #再向空字典中添加键值对
alien_0['points']='5'
print(alien_0)
{'color': 'green', 'points': '5'}
4.修改字典中的值
alien_0={'color':'green','points':5}
print(f"The alien color is {alien_0['color']}.")
alien_0['color']='yellow' #修改键对应的值
print(f"The alien color now is {alien_0['color']}.")
The alien color is green.
The alien color now is yellow.
对一个能以不同速度的外星人进行位置跟踪
alien_0 = {'x_position':0,'y_position':25,'speed':'medium'} #字典中不会出现=,要用:链接键和值
print(f"Original position :{alien_0['x_position']}.")
if alien_0['speed'] == 'slow': #在if语句中一般不用=,用==
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.
5.修改键值对 (del语句)
对于字典中不再需要的信息,可用del语句将相应的键值对删除,需指定字典名和要删除的键。删除的键值对会永远消失。
alien_0={'color':'green','points':5}
print(alien_0)
del alien_0['points'] #删除points键值对
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green'}
6.由类似对象组成的字典
使用多行来定义字典时,输入{ }后按下回车键,下一行会自动缩进四个空格,输入键值对,加上逗号,再按回车键,将自动缩进后续键值对。在最后一个键值对后加上逗号,可为在下一行添加键值对做准备。最后一个键值对的下一行添加右侧花括号},并缩进四个空格。
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
language = favorite_languages['sarah'].title()
print(f"Sarah's favorite language is {language}.")
Sarah's favorite language is C.
7.使用get()来访问值,避免不存在值而错误
如果字典中不存在要访问的值,会存在键值错误(KeyError)。就字典而言,可用方法get( )在指定的键不存在时,返回一个默认值,从而避免这样的错误。
alien_0={'color':'green','speed':'medium'}
print(alien_0['points'])
KeyError: 'points'
方法get( )的第一个参数用于指定键,必不可少;第二个参数为指定键不存在时要返回的值,是可选的。如果没有指定第二个参数,且指定的键不存在,python将返回值None。
alien_0 = {'color':'green','speed':'medium'}
point_value = alien_0.get('points','No point value assigned.')
print(point_value)
No point value assigned.
二、遍历字典
1.遍历所有的键值对(方法item)
用for循环来遍历,声明两个变量来存储键和值,再用方法items( ),最后分别打印两个变量的值。
遍历整个列表,将列表中的键赋给变量key,将列表中的值赋给变量value。
字典中for循环中两个变量是可直接用的,替代字典中的键和值。
user_0 = {
'username':'efermi',
'first':'enrico',
'last':'fermi',
}
for key,value in user_0.items(): #要声明两个变量,用于存储键值对中的键和值,变量名可随意
#for k,v in user_0.items():
print(f"Key:{key}")
print(f"Value:{value}")
Key:username
Value:efermi
Key:first
Value:enrico
Key:last
Value:fermi
循环中键都为人名,值都为语言。利用变量为name和language,而不用key和value,可以让人更容易明白循环的作用。
favorite_language={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for name,language in favorite_language.items():
#python遍历字典中的每个键值对,将键赋给变量name,将值赋给变量language.
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.
2.遍历字典中的所有键(方法keys)
在不需要使用字典中的值时,方法keys( )返回键列表。使用方法keys( )可让代码更容易理解,但也可以忽略。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for name in favorite_language.keys(): #让python提取字典中所有的键,并依次赋给变量name
#for name in favorite_language:
print(name.title())
Jen
Sarah
Edward
Phil
对部分键打印特殊消息:由字典中的键组成的列表赋值给变量,在后面循环中,可将变量名作为键来获得相应的值。?
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
friends = ['phil','sarah']
for name in favorite_language.keys(): #由字典中的键组成的列表赋给变量name
print(f"Hi, {name.title()}")
if name in friends:
#不需要对friends列表循环,只需要判断键(之前已经进行循环了)是否在列表中
language = favorite_language[name].title() #将name的当前值做为键,获得对应的值
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( )确定某人是否接受了调查。方法keys( )并非只能用于遍历,实际上返回整个列表,包含字典中所有的键。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
if 'erin' not in favorite_language.keys():
print("Erin,please take our poll!")
Erin,please take our poll!
?3.遍历字典中所有的值(方法values)
方法values( )返回一个值列表,不包含任何键。这种做法提取字典中所有的值,没有考虑是否重复。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
print("The following languages have been mentioned:")
for language in favorite_language.values():
print(language.title())
The following languages have been mentioned:
Python
C
Ruby
Python
4.按特定顺序遍历字典中所有的键(函数sorted)
一般情况下,遍历字典时将按照插入的顺序返回其中的元素。在有些情况下,需要按与此不同的顺序遍历字典。可在for循环中对返回的键进行排序,用函数sorted( )来获得按特定顺序排列的键列表的副本。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for name in sorted(favorite_language.keys()): #在for循环中对键进行了排序
print(f"{name.title()},thank you for taking the poll.")
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.
5.删除字典中重复的值(函数set)
为剔除重复项,可使用函数set( ),让python找出列表中独一无二的元素。集合中的每一个元素都必须是独一无二的。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
print("The following languages have been mentioned:")
for language in set(favorite_language.values()):
print(language.title())
The following languages have been mentioned:
Python
C
Ruby
注意:可以使用一对花括号来直接创建集合,并用逗号分割元素。集合和字典和容易混淆,当花括号内没有键值对时,定义的可能时集合。不同于列表和字典,集合不会以特定的顺序存储元素。
>>> languages={'python','c','python','ruby'}
>>> languages
{'python', 'ruby', 'c'}
|