字典
概念:
现实类比
- 查字典:通过“拼音/部首”(Key)快速找到“释义”(Value)。
- 通讯录:通过“名字”(Key)找到“电话号码”(Value)。
xiaoming = {"name": "小明", "age": 20 , "gender": "男" } print(xiaoming)print(xiaoming['age'])print(xiaoming['gender'])
核心定义
注意
1、字典使用花括号 {} 来定义,键值对之间用逗号分隔,键和值之间用冒号 : 分隔。例如:{"name": "小明", "age": 20} 表示一个包含姓名和年龄的字典.访问字典中的值时,可以使用键作为索引。例如,xiaoming["name"] 将返回 "小明"。
xiaoming = {"name": "小明", "age": 20 , "gender": "男" } print(xiaoming)print(xiaoming['age'])print(xiaoming['gender'])
2、每个键都与一个值关联,可以使用键来访问与之关联的值。与键相关联的值可以是数、字符串、列表乃至字典。
xiaoming = {"name": "小明", "age": 20 , 'day': [12,22] } print(xiaoming)print(xiaoming['day'])
操作字典
添加键值对
xiaoming = {"name": "小明", "age": 20}xiaoming["gender"] = "男"print(xiaoming)
xiaoming = {"name": "小明", "age": 20}print(xiaoming)xiaoming["gender"] = "男"print(xiaoming)
注意
在字典中,可以创建无数个键值对,但每个键必须是唯一的。如果尝试使用已存在的键添加新的键值对,原有的值将被新的值覆盖。
xiaoming = {"name": "小明", "age": 20}xiaoming["age_1"] = 21print(xiaoming)
创建空字典
empty_dict = {}print(empty_dict)
empty_dict = dict()print(empty_dict)
修改字典中的值
xiaoming = {"name": "小明", "age": 20}xiaoming["age"] = 21print(xiaoming)
在这个例子中,要修改 xiaoming 字典中键为 "age" 的值,还可以使用 update() 方法:
xiaoming = {"name": "小明", "age": 20}xiaoming.update({"age": 21})print(xiaoming)xiaoming.update({"age": 21, "gender": "女"})print(xiaoming)
同样的,还可以使用if else 语句来根据情况修改字典中的值:
xiaoming = {"name": "小明", "age": 20, 'years':2025}if xiaoming['years'] > 2024: add_age = 2else: add_age = 0xiaoming["age"] = add_age + xiaoming["age"]print(xiaoming)
删除字典中的键值对
xiaoming = {"name": "小明", "age": 20, 'years':2025}del xiaoming["years"]print(xiaoming)
面对多个键值对的建议
当字典中包含多个键值对时,建议使用以下方法进行管理: 将每个键值对放在单独的一行,以提高可读性。例如:
my_dict = {"name": "小明","age": 20,"gender": "男",}print(my_dict)
使用get()方法访问字典中的值
xiaoming = {"name": "小明", "age": 20, 'years':2025}xiaoming_tall = xiaoming.get('tall',)print(xiaoming_tall)
好处在于,即使键不存在,也不会引发错误,而是返回一个默认值(如果提供了默认值的话)。
xiaoming = {"name": "小明", "age": 20, 'years':2025}print(xiaoming['tall'])
遍历字典
遍历所有键值对
例如,遍历字典 xiaoming 的键和值:
xiaoming = {"name": "小明", "age": 20, "gender": "男"}for key in xiaoming:print(f"{key}:")
遍历所有键
使用 for 循环遍历字典的所有键: 1、keys()方法来遍历输出所有的键
xiaoming = {"name": "小明", "age": 20, "gender": "男"}for keys in xiaoming.keys():print(keys)
在这个例子中,keys() 方法返回字典中的所有键,然后通过 for 循环逐个输出每个键。其实也可以直接通过字典变量来遍历输出所有的键,因为字典默认遍历的是键。
xiaoming = {"name": "小明", "age": 20, "gender": "男"}for key in xiaoming:print(key)
遍历所有值
使用 for 循环遍历字典的所有值:1、values()方法来遍历输出所有的值在这个例子中,values() 方法返回字典中的所有值,然后通过 for 循环逐个输出每个值。
xiaoming = {"name": "小明", "age": 20, "gender": "男"}for value in xiaoming.values():print(value)
2、当字典中有大量值且包含重复值时,可以使用集合(set)来去重后遍历输出所有唯一的值。例如:
scores = {"Alice": 85, "Bob": 90, "Charlie": 85, "David": 92 , 'Amy':90}unique_scores = set(scores.values())for score in unique_scores:print(score)
字典嵌套
字典套字典
students = {"001": {"name": "小明", "age": 20},"002": {"name": "小红", "age": 19}, }student_name = students["001"]["name"]print(student_name)
字典套列表
- 字典的值也可以是一个列表,从而实现更复杂的数据结构。
students_scores = {"小明": [85, 90, 78],"小红": [92, 88, 95],"小刚": [75, 80, 70]}print(students_scores['小明'][1])
作业1
1、请创建一个字典,包含三位学生的姓名和对应的成绩列表。然后,遍历字典,输出每位学生的姓名及其所有成绩的平均分。2、创建多个表示宠物的字典,每个字典都包含宠物的类型和名字、其主人的名字。将这些字典存储在一个名为 pets 的列表中,再遍历该列表,并将有关每个宠物的所有信息打印来,输出格式为 'xx(宠物名)是一条xx(宠物类型),它的主人是xx(主人的名字)'。3、创建一个名为 favorite_places 的字典。在这个字典中,将三个人的名字用作键,并存储每个人喜欢的 1~3 个地方。。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
grades = {'a':{'name':'001', 'grade':[12,12,11]},'b':{'name':'002', 'grade':[12,32,11]},'c':{'name':'003', 'grade':[42,12,11]}}for key in grades: value_1 = grades[key] name_for_print = value_1['name'] socre = value_1['grade'] socre_for_print = sum(socre)/3print(f'{name_for_print}的平均成绩是{socre_for_print}')
001的平均成绩是11.666666666666666002的平均成绩是18.333333333333332003的平均成绩是21.666666666666668
whlie循环和用户输入
使用input()函数获取用户输入
name = input("请输入你的名字:")print("你好," + name + "!")
注意事项
输入的数据类型:input() 函数获取的用户输入默认是字符串类型。如果需要其他类型的数据(如整数或浮点数),需要进行类型转换。例如,使用 int() 将输入转换为整数:
age = int(input("请输入你的年龄:"))print(age,type(age))
2、当提示信息过长时,可以使用多行字符串(用三引号括起来的字符串)作为提示信息,以提高可读性。例如:
prompt = "请输入以下信息: 1. 你的姓名 2. 你的年龄 3. 你的城市"user_info = input(prompt)print("你输入的信息是:", user_info)
while循环
while 条件:# 循环体代码块
下面是一个使用 while 循环打印数字 1 到 5 的示例:
count = 1while count <= 5:print(count) count = count + 1for i inrange(1,6):print(i)
- 首先,计算条件的值。如果条件为真(True),则执行循环体代码块。
- 如果条件仍为真,重复步骤 2;如果条件为假(False),则退出循环,继续执行循环后面的代码。
使用break语句退出循环
whileTrue: user_input = input("请输入命令(输入 'exit' 退出):")if user_input.lower() == "exit":print("退出循环。")breakelse:print(f"你输入的命令是:{user_input}")
使用continue语句跳过当前迭代
count = 0while count < 10: count = count + 1if count % 2 == 0:continueprint(count)
作业2
1、编写一个循环,提示用户输入一系列比萨配料,并在用户输入 'quit' 时结束循环。每当用户输入一种配料后,都打印一条消息,指出要在比萨中添加这种配料。、
2、以不同的方式完成题目1,在程序中采取如下做法:-在 while 循环中使用条件测试来结束循环。-使用变量 active 来控制循环结束的时机。-使用 break 语句在用户输入 'quit' 时退出循环。