学习Python字典!

一起来学习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字典的学习就到这啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值