一起来学习Python字典!
作者:雷蕾
我们先来看一个简单的字典:
aliens_0={'color':'green','point':'5'}
print(aliens_0['color'])
print(aliens_0['point'])
在上述例子中,aliens_0存储了外星人的颜色和分数,我们先看看看它的输出结果然后再试着仔细解读这段代码:
green
5
在python中,字典就是一系列的键值对,每个键与一个值相关联,需要注意的是字典用放在花括号{}中的一系列键值对表示,而列表是用方括号[],这一点我们不能搞混。
现在我们试着来解读aliens_0={‘color’:‘green’,‘point’:‘5’}这句代码,aliens_0={‘color’:‘green’}是一对键值对,'color’是键,'green’s是值,键和值之间用冒号(:)隔开,而键值对之间用逗号(,)。
在下列代码中,我们访问了与键相关联的值并打印出来。
print(aliens_0['color'])
print(aliens_0['point'])
那下面我们来具体学习对字典进行的几种基础操作
(一)添加键值对
alien_0={'color':'green','point':'5'}
print(alien_0)
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)
输出结果:
{'color': 'green', 'point': '5'}
{'color': 'green', 'point': '5', 'x_position': 0, 'y_position': 25}
在进行第一次打印时,字典alien_0只包含了外星人的颜色和分数,在经过添加键值对之后进行第二次打印,我们可以看到字典alien_0不只是包含了外星人的颜色和分数,还多出了外星人的两个指定位置。
那如何对字典进行添加键值对呢?要添加键值对,可依次指定字典名、用方括号括起的键和相关联的值。
(二)修改字典中的值
先来看一段代码:
#可先创建一个空表,后面往里面添加键值对
alien_0={} #字典用花括号
alien_0['color']='green'
alien_0['point']=5
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)
#修改字典中的值
alien_0['color']='red'
print(alien_0)
输出结果:
{'color': 'green', 'point': 5, 'x_position': 0, 'y_position': 25}
{'color': 'red', 'point': 5, 'x_position': 0, 'y_position': 25}
我们可以看到上述代码的第九行,我们对字典alien_0中的键’color’的值进行了修改,把颜色从绿色改为红色,我们从输出结果就可以看到字典的两次打印是不同的。要修改字典中的值,我们可以可依次指定字典名、用方括号括起来的键,以及与该键相关联的新值。
(三)删除键值对
同样地,我们先来看一段代码:
#删除键值对
alien_0={'color':'green','point':5}
print(alien_0)
del alien_0['point']
print(alien_0) #del进行永久删除
输出结果:
{'color': 'green', 'point': 5}
{'color': 'green'}
在我们使用del语句将字典alien_0中的键’point’进行删除时,再一次打印字典,我们可以看到输出结果已经没有这对{‘point’: 5}键值对,del语句永久删除键’point’以及它对应的值。
所以对于字典中不再需要的信息,可使用del语句将相应的键值对删除。
(四)使用get()来访问值
使用放在方括号内的键从字典中获取感兴趣的值时,可能会引发一些问题,当指定的键字典中不存在就会出错。
我们来简单看一段例子:
alien_0={'color':'red','speed':'slow'}
print(alien_0['points'])
在上述代码中,我们需要知道外星人的分数,但是字典中只有外星人的颜色以及速度,那输出结果会怎么样呢?
Traceback (most recent call last):
File "C:\Users\12184\Desktop\python_work\6_字典\alien_no_points.py", line 3, in <module>
print(alien_0['points'])
KeyError: 'points'
果不其然,报错了,那我们如何去解决这个问题呢?使用get()就可以。
alien_0={'color':'red','speed':'slow'}
#print(alien_0['points'])
#为了避免错误,我们可以使用get()来给一个默认值
point_value=alien_0.get('point','no point value assigned')
print(point_value)
输出结果:
no point value assigned
通过使用get(),当字典中没有要获取的键时,将获得指定的默认值。
那当我们要访问的键可能不存在时,要考虑使用方法get()。
(五)遍历字典
我们知道一个字典中可能包含百万个键值对,下面我们就可以了学习如何遍历字典,在对字典进行遍历时,主要是有这几点:
(1)遍历所有键值对
(2)遍历字典中的所有键
(3)遍历字典中的所有值
(4)按特定顺序遍历字典中的所有键
现在我们先来学习遍历所有键值对:
user_0={'username':'efermi',
'firstname':'enrico',
'lastname':'fermi'
}
for key,value in user_0.items(): #使用items()方法把键给key,把值给value;
print(f'\nkey:{key}')
print(f'value:{value}')
输出结果:
key:username
value:efermi
key:firstname
value:enrico
key:lastname
value:fermi
我们试着解读这段代码,首先编写遍历字典的for循环,然后声明两个变量key和value,用于存储键盘对中的键和值。
重点是在for语句中包含了字典名和方法items(),它返回一个键值对列表,for循环依次将每个键值对赋给指定的两个变量,键赋给key,值赋给value,这两个变量可任意取名。
接下来是学习遍历字典中的所有键:
#遍历字典中的所有键,使用方法keys()
favourite_language={'jen':'python',
'sarach':'c',
'edward':'python',
'phil':'c'}
for name in favourite_language.keys():
print(name.title())
输出结果:
Jen
Sarach
Edward
Phil
因为上面有对for语句的详细解读了,现在我们重点将方法keys(),因为它将键值对中的键赋给变量name,因此在不需要使用字典中的值的时候,方法keys()很有用。
那如何遍历字典中的所有值呢?我们可以使用方法values()来返回一个值列表,不包含任何键。
#遍历字典中的所有值,使用方法values()
favourite_language={'jen':'python',
'sarach':'c',
'edward':'python',
'phil':'c'}
for value in favourite_language.values():
print(value.title())
输出结果:
Python
C
Python
C
我们可以看到一个问题就是有重复项,我们可以通过集合set()来剔除重复项。
#遍历字典中的所有值,使用方法values()
favourite_language={'jen':'python',
'sarach':'c',
'edward':'python',
'phil':'c'}
#for value in favourite_language.values():
# print(value.title()) #输出结果有重复项
#为了避免重复项,我们可以使用set()
for value in set(favourite_language.values()):
print(value)
输出结果:
c
python
我们可以看到,当使用**集合set()**后没有出现重复项了。
当然我们还可以按特定顺序遍历字典中的所有键:
#按特定顺序遍历字典中的所有键,使用sorted(),按首字母顺序进行排序
favourite_language={'jen':'c',
'bob':'python',
'sarah':'c',
'faloser':'python'
}
for name in sorted(favourite_language.keys()):
print(name)
输出结果:
bob
faloser
jen
sarah
使用函数sorted(),我们可以得到一个按首字母顺序排列的键列表。
(六)嵌套
在使用python过程中,我们可能会需要将一系列字典存储在列表中或将列表存储在字典中,这种称之为嵌套,下面我们来具体学习它们。
(1)在列表中存储字典:
alien_0={'color':'green','points':5}
alien_1={'color':'yellow','points':10}
alien_2={'color':'red','points':15}
aliens=[alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
输出结果:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
(2)在字典中存储列表:
pizza={'cust':'thick',
'toppings':['mushrooms','extra cheese']}
print(f"\nyou oreder a {pizza['cust']}-cust pizza"
"with the following toppings:")
for topping in pizza['toppings']:
print("\t"+topping)
输出结果:
you oreder a thick-cust pizzawith the following toppings:
mushrooms
extra cheese
(3)在字典中存储字典:
#在字典中存储字典
users={
'aeinstein':{
'first':'albert',
'last':'einstein',
'location':'princetor'
},
'mcurie':{
'first':'marine',
'last':'curie',
'location':'paris'
}
}
for username, user_info in users.items():
print(f"\nusername:{username}")
full_name=f"{user_info['first']}{user_info['last']}"
location=f"{user_info['location']}"
print(f"full_name:\n{full_name}")
print(f"location:\n{location}")
输出结果:
username:aeinstein
full_name:
alberteinstein
location:
princetor
username:mcurie
full_name:
marinecurie
location:
paris
上述这是几种常见的嵌套,我们认真解读代码之后就懂啦~
有关于python字典的学习就到这啦~