系列文章目录
系列文章目录
Python基础学习第一课——python环境的配置及vscode的安装汉化
Python基础第二课——基础知识
Python基础第三课——条件语句和循环语句
Python基础第四课——字符串的相关操作
Python基础第五课——列表和元组
Python基础第六课——字典(本篇文章内容)
文章目录
前言
上一篇文章中我们讲到了python的列表和元组,这篇文章中,我们继续来讲解python中特别重要的一个容器类型——字典,如果想了解系列目录中前面的python基础内容,请在我的主页查找阅读。
一、字典是什么?
字典是python所特有的一种无序、可变的容器类型,且是最强大的数据类型之一,它可储存各种数据类型,如字符串、数字以及元组等其他容器模型。
二、字典的定义
字典(dict),它以键值对(key键 - value值)的形式存储数据。字典中的键必须是唯一且不可变的数据类型(如字符串、数字或元组),而值可以是任何数据类型,包括其他字典、列表等。
三、字典的创建
1.直接创建
字典的一般格式为:字典名={元素1,元素2...},元素即以键值对的形式存在
字典的每个键值对 key:value 用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
如下所示:
d = {key1 : value1, key2 : value2 }
空字典格式:字典名={},如下所示:
d = {}
举个简单的代码示例:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
print(student)
#在这个例子中,"id"、"name"、"age"和"grade"是键,1、"Alice"、20和"A"是相应的值。
stu = {}
print(stu)
#在这个例子中,stu被定义为一个空字典,输出结果就是一个简单的{}
2. 使用dict()函数创建
student = dict(id = 1, name ='Alice', age = 20, grade ='A')
print(student)
这种方式和直接使用花括号创建类似,只是语法上有所不同。上述代码的输出结果跟前面给的那个例子的输出结果相同。
还可以通过将包含键值对的序列(如列表)传递给dict()函数来创建字典。例如,假设有一个包含两个元组的列表,每个元组包含两个元素(键和值):
data_list = [("key1", "value1"), ("key2", "value2")]
my_dict = dict(data_list)
print(my_dict)
#这将创建一个包含"key1": "value1"和"key2": "value2"两个键值对的字典。
#输出结果为:{'key1': 'value1', 'key2': 'value2'}
创建字典时的注意事项:
- 键key一般是唯一的,如果重复只会保留第一个,值value不需要唯一。
- 键key可以是任意的数据类型,但不能出现可变的数据类型,保证键key唯一。
- 键key的一般形式为字符串。
四、字典的访问
1.通过键访问值
格式:value=字典名[key]
例如,对于前面定义的
student
字典,如果要访问学生的姓名,可以使用以下方式:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
print(student["name"])
#这将输出"Alice"。如果访问的键不存在,会抛出KeyError异常
学过C语言的朋友,有没有觉得这个很像C语言中的结构体,但是定义和访问起来更加方便
如果我们访问到不存在的键而且还不想收到KeyError的报错信息,可以使用get()的方式,按我们想要的方式去给出一个提示,说明访问的键不存在,这里给一个简单的示例:
#get()方法的语法:
#字典名.get("要访问的键","指定键不存在时返回的值")
#如果要访问的键存在,那就返回该键对应的值,如果不存在,那就返回第二个参数中的内容
#指定键不存在时返回的值默认为None
#还是按照上面定义的字典给出示例:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
print(student.get("major", "未找到该键对应的值"))
#这里尝试访问一个没有被定义的键major,但是因为这个键不存在,所以就返回输出了第二个参数:"未找到该键对应的值"
2.遍历
使用for循环来遍历字典中的键、值或键值对:
遍历键:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
for key in student:
print(key)
#这将输出字典student中的所有值
#输出结果为:
#id
#name
#age
#grade
遍历值:要遍历字典的值,可以使用
values()
方法。例如:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
for value in student.values():
print(value)
#这将输出字典student中的所有值
#输出结果为:
#1
#Alice
#20
#A
遍历键值对:使用items()方法,同时遍历字典中的键和值,例如:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
for key, value in student.items():
print(key, value)
#这将输出字典student中的每个键值对
#输出结果:
#id 1
#name Alice
#age 20
#grade A
五、字典的基本相关操作
1、修改值
可以通过键来修改字典中的值。例如:
# 定义一个字典
dict = {"name": "小明", "age": 20, "sex": "man"}
#对其中一个键对应的值进行修改
dict["name"]="小张"
print(dict)
#输出结果为:{'name': '小张', 'age': 20, 'sex': 'man'}
2、更新字典
可以使用
update()
方法来更新一个字典,update()
方法可以接受另一个字典作为参数,并将其中的键值对添加到原字典中。如果有相同的键,则会覆盖原字典中的值。举个例子:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
new_stu = {"grade": "A+", "major": "Math"}
student.update(new_stu)
print(student)
#输出结果为:{'id': 1, 'name': 'Alice', 'age': 20, 'grade': 'A+', 'major': 'Math'}
#现在字典student会添加"major"键值对,并将"grade"的值更新为"A+"。
3、删除操作
可以使用
del
语句来删除字典中的键值对。例如,要删除student
字典中的"id"
键值对:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
del student["id"]
print(student)
#我们用del删除了id这个键值对,现在字典student中就没有"id"这个键值对了。
#该代码输出结果为:{'name': 'Alice', 'age': 20, 'grade': 'A'}
4、清空字典
使用clear()方法可以清空字典中的所有内容。例如:
student = {"id": 1, "name": "Alice", "age": 20, "grade": "A"}
student.clear()
print(student)
#字典student里的内容就被清除了,输出得到的结果为一个空字典
5、更多操作
5.1 字典的嵌套
字典的值可以是另一个字典,这就形成了字典的嵌套。例如,我们可以构建一个包含学生信息和课程成绩的嵌套字典:
students = {
"student1": {
"name": "Alice",
"age": 20,
"courses": {
"math": 90,
"english": 85
}
},
"student2": {
"name": "Bob",
"age": 21,
"courses": {
"math": 80,
"english": 75
}
}
}
对这个嵌套字典中的元素进行访问,则需要使用多个索引,例如,如果我们想访问student1的english成绩,则需要这样访问:
print(students["student1"]["courses"]["english"])
输出结果即为访问到的值:85
5.2 字典的排序
我们可以使用sorted()函数对字典进行排序,既可以按键来排,也可以根据值来排,这里给一个简单的使用键来排序的示例:
my_dict = {"c": 3, "a": 1, "b": 2}
sorted_keys = sorted(my_dict.keys())
for key in sorted_keys:
print(key, my_dict[key])
#输出结果为:
#a 1
#b 2
#c 3
5.3 字典的比较
使用
==
运算符来比较两个字典是否相等。两个字典相等当且仅当它们具有相同的键值对(键和值都相同)。例如:
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 2, "a": 1}
print(dict1 == dict2)
#返回值为True
这两个字典中,虽然键值对的顺序不同,但是他们键值对的值都是相同的,所以判定为两字典相同,即返回True
要检查一个字典是否是另一个字典的子集(即包含另一个字典的所有键值对),可以使用字典的
items()
方法和issubset()
方法(如果字典被看作是集合的话)或者通过循环来逐个比较键值对。例如:
dict1 = {"a": 1, "b": 2}
dict2 = {"a": 1, "b": 2, "c": 3}
print(dict1.items() <= dict2.items())
#返回值为: True
六、字典的应用
我们在开始的时候说,字典时python中特有的一种容器类型,且是最强大的数据类型之一,那么这从何体现呢?
首先,字典在存储具有关联性的数据时非常方便。例如,在处理用户配置信息、数据库记录等场景中,通过键来快速检索和修改值可以提高效率。
其次,字典也常被应用于各种算法和程序逻辑中,因为很多算法和程序逻辑都需要使用到类似哈希表的数据结构来快速查找和处理数据,而我们的字典恰好可以很好的扮演这个角色。
最后,字典可以和其他数据类型协同工作,可以很方便的更新、修改和删除数据,以便最后的处理和分析。
总结
字典是python中很重要的一个数据类型,在以后的实际应用中会经常被使用到,所以一定要熟练掌握它。
如果觉得这篇文章中有哪些地方讲的不对,或者哪里理解不清楚,又或者是觉得还有很重要的点我没有讲到,都可以发在评论区,我们一起讨论交流。
在下一篇文章对于函数的讲解写完之后,就会发布一些python项目实战综合运用一下,毕竟看会了不代表会敲了,会写代码才是真正的成功。
创作不易,希望可以给个三连支持一下~
标签:20,name,第六课,python,age,键值,student,字典 From: https://blog.csdn.net/liyibowen2006/article/details/144437070