当前位置:实例文章 » Python实例» [文章]【Python从入门到进阶】14、字典高级应用

【Python从入门到进阶】14、字典高级应用

发布人:shili8 发布时间:2023-04-11 02:24 阅读次数:32

接上篇《13、元组高级应用及常见切片操作》
上两篇我们学习了Python中元组的高级应用,以及字符串、列表和元祖的切片操作。本篇我们来学习字典的高级应用,包括字典的查询、修改、添加、删除及遍历操作。

一、字典高级简介

我们通过前面的学习知道,字典是另一种可变容器模型,且可存储任意类型对象。在我们使用字典的过程中,也会经常需要对字典进行处理,诸如查询某个键值对,插入新的键值对、删除某个键值对、修改某个键值对、查找匹配的某个元素值等,这些操作都需要使用python内置的对字典进行逻辑操作的函数来完成,这部分内容就是字典的高级应用。
下面我们通过实例及应用场景来为大家介绍字典高级应用中使用到的函数。

二、查看元素

有两种方式查看字典中的元素,第一种是直接通过key值查找,这种需要注意,如果没有这个key值,就会出现异常,例如:

student = {'name':'王小虎','age':18}

print(student['name']) #获取姓名
print(student['sex'])  # 获取不存在的key,会报错

结果:

第二种方式就是通过get函数获取,这种获取方式的好处就是没有key不会报错,并且我们可以给他赋一个默认值,如:

student2 = {'name':'马小跳','age':11}

print(student2.get('age')) #获取年龄
print(student2.get('sex')) #获取不存在的key,get只会返回一个None的内容,不会报错
print(student2.get('sex','男')) #获取不存在的key,可以提供一个默认值

结果:

11
None
男

三、修改元素

字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改,例如:

print('修改之前的字典为 %s' %student3)
#为已存在的键值赋值就是修改
student3['sex']= '女'
student3['age']= 15
student3['country']= '美国'
print('修改之后的字典为 %s' %student3)

效果:

修改之前的字典为 {'name': '马丁', 'sex': '男', 'age': 13, 'country': '英国'}
修改之后的字典为 {'name': '马丁', 'sex': '女', 'age': 15, 'country': '美国'}

注:有同学可能想用上面的get函数来指定值的修改,这里是不可以的,get函数只是一个查询函数,无法给其指定值,强行赋值就会报错,这里要注意。

四、添加元素

如果在使用 变量名['建']=数据 时,这个'键'在字典中不存在,那么就会新增这个元素,例如:

student4 = {'name':'马丁','sex':'男'}

print('修改之前的字典为 %s' %student4)
student4['id']= 311209060230 # 为不存在的键值赋值就是添加元素
print('修改之后的字典为 %s' %student4)

结果:

修改之前的字典为 {'name': '马丁', 'sex': '男'}
修改之后的字典为 {'name': '马丁', 'sex': '男', 'id': 311209060230}

五、删除元素

对字典进行删除操作,有以下几种方法:
● del
● clear()

(1)del的作用,是删除指定的某一个元素,或者删除整个字典,如:

person = {'name': '张三', 'age': 30, 'job': '程序员'}

print('删除之前的字典为 %s' %person)
del person['name']  # 删除键是'name'的条目
print('删除之后的字典为 %s' %person)
del person # 删除整个字典对象
#但这会引发一个异常,因为用del后字典不再存在
print('删除之后的字典为 %s' %person)

结果:

删除之前的字典为 {'name': '张三', 'age': 30, 'job': '程序员'}
删除之后的字典为 {'age': 30, 'job': '程序员'}
Traceback (most recent call last):
  File "D:\Python_Projects\Python基础\字典高级.py", line 40, in <module>
    print('删除之后的字典为 %s' %person)
                         ^^^^^^
NameError: name 'person' is not defined

(2)clear()是清空字典所有条目,但是会保留字典对象:

person2 = {'name': '李四', 'age': 23, 'job': 'UI设计员'}
print('清空之前的字典为 %s' %person2)
person2.clear()
print('清空之后的字典为 %s' %person2)

效果:

清空之前的字典为 {'name': '李四', 'age': 23, 'job': 'UI设计员'}
清空之后的字典为 {}

这里只是将字典中所有的数据都删除掉了,但是扔保留了字典的结构和元素。

六、遍历字典

什么叫“遍历”?“遍历”就是将数据一个一个的输出。我们如何将字典进行遍历呢?首先我们要了解一下遍历的需求,针对字典这种键值对形式的集合,我们有以下四种遍历的方式:

● 遍历字典的key
● 遍历字典的value
● 遍历字典的项/元素
● 遍历字典的key和value

下面我们来一一学习。

(1)遍历字典的key

我们通过for循环来遍历,这里需要用到字典的“keys()”函数,该函数可以将字典对象的所有key值获取到,返回一个"dict_keys"的列表,我们只需要通过for循环遍历这个key的列表即可:

person3 = {'name': '刘美玲', 'age': 21, 'job': '前台开发'}
# 字典.keys()方法,获取字典中所有的key值
# key 是一个变量的名字,用于承接for循环的每一个元素,名字可以随便起
print('person3.keys()得到的元素类型:',type(person3.keys()))
for key in person3.keys():
    print(key)

结果:

person3.keys()得到的元素类型: <class 'dict_keys'>
name
age
job

(2)遍历字典的value

这里需要用到字典的“values()”函数,该函数可以将字典对象的所有value值获取到,返回一个"dict_values"的列表,我们只需要通过for循环遍历这个value的列表即可:

# 字典.values()方法,获取字典中所有的value值
# value 是一个变量的名字,用于承接for循环的每一个元素,名字可以随便起
print('person3.values()得到的元素类型:',type(person3.values()))
for value in person3.values():
    print(value)

结果:

person3.values()得到的元素类型: <class 'dict_values'>
刘美玲
21
前台开发

(3)遍历字典的项/元素

这里需要用到字典的“items()”函数,该函数可以将字典对象的所有项目获取到,返回一个"dict_items"的元素,我们就可以打印每一个元素了:

# 字典.items()方法,获取字典中所有的项/元素
# item 是一个变量的名字,用于承接for循环的每一个元素,名字可以随便起
print('person3.items()得到的元素类型:',type(person3.items()))
for item in person3.items():
    print(item) # 单个键值对元素

结果:

person3.items()得到的元素类型: <class 'dict_items'>
('name', '刘美玲')
('age', 21)
('job', '前台开发')

(4)遍历字典的key和value

这里就直接利用上面的“items()”函数,在for循环中遍历的时候,不直接承接单个元素,而是使用key、value来承接,程序会自动判定其中的key和value,给相应的元素赋值,最终拿到这个元素的key、value值:

# 通过items循环,遍历出每个元素的key和value
for key,value in person3.items():
    print(f'key = {key},value = {value}') # 单个键值对元素

结果:

key = name,value = 刘美玲
key = age,value = 21
key = job,value = 前台开发

至此,字典的高级应用就全部学习完了。下一篇我们来正式学习Python的函数相关内容。

参考:尚硅谷Python爬虫教程小白零基础速通教学视频

转载请注明出处:https://www.shili8.cn/article/detail_20000535149.html

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

其他信息

其他资源

Top