您好:这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人...
2025-08-14 0
字典(Dictionary)是 Python 中一种非常灵活的内置数据结构,它以键值对(Key-Value Pair)的形式存储数据。字典就像一本真实的字典:“键”(Key)相当于字典中的 “单词”,“值”(Value)相当于单词对应的 “解释”,通过 “单词” 可以快速找到对应的 “解释”。
与列表和元组不同,字典中的元素是无序的(在 Python 3.7 + 版本中,字典会保留插入顺序,但不建议依赖这一特性),它通过 “键” 来访问元素,而不是通过索引。这使得字典在根据 “键” 查找 “值” 时效率极高。
字典使用花括号({})来表示,每个键值对由 “键:值” 组成,键值对之间用逗号(,)分隔。创建字典的基本语法如下:
字典名 = {键1: 值1, 键2: 值2, 键3: 值3, ...}
示例:
# 存储学生信息的字典(键为信息类别,值为具体信息)
student = {
"name": "张三",
"age": 18,
"gender": "男",
"score": 90
}
# 存储商品信息的字典
product = {
"id": 1001,
"name": "笔记本电脑",
"price": 5999.99,
"stock": 50
}
# 空字典
empty_dict = {}
# 使用dict()函数创建字典
person = dict(name="李四", age=20, city="北京")
print(person) # 输出:{'name': '李四', 'age': 20, 'city': '北京'}
字典的键必须满足以下条件:
示例:
# 错误:列表是可变类型,不能作为键
# invalid_dict = {[1, 2]: "value"} # 会报错:TypeError: unhashable type: 'list'
# 重复的键:后面的会覆盖前面的
duplicate_key = {"name": "张三", "name": "李四"}
print(duplicate_key) # 输出:{'name': '李四'}
访问字典中的元素主要有两种方式:通过 “键” 访问和使用get()方法。
通过 “键” 访问字典元素的语法如下:
字典名[键]
示例:
student = {
"name": "张三",
"age": 18,
"score": 90
}
# 访问姓名
print(student["name"]) # 输出:张三
# 访问年龄
print(student["age"]) # 输出:18
如果访问的键不存在,会导致 “键不存在” 错误(KeyError):
print(student["gender"]) # 会报错:KeyError: 'gender'
get()方法的语法如下:
字典名.get(键, 默认值)
示例:
student = {
"name": "张三",
"age": 18,
"score": 90
}
# 访问存在的键
print(student.get("name")) # 输出:张三
# 访问不存在的键,指定默认值
print(student.get("gender", "未知")) # 输出:未知
# 访问不存在的键,不指定默认值
print(student.get("address")) # 输出:None
使用get()方法可以避免因键不存在而导致的错误,在实际编程中更常用。
字典是可变的,我们可以通过 “键” 来修改已有键对应的值。语法如下:
字典名[键] = 新值
示例:
student = {
"name": "张三",
"age": 18,
"score": 90
}
# 修改成绩
student["score"] = 95
print(student["score"]) # 输出:95
# 修改年龄
student["age"] = 19
print(student) # 输出:{'name': '张三', 'age': 19, 'score': 95}
向字典中添加新的键值对的语法与修改元素类似:如果键不存在,赋值操作会变成添加元素。
student = {
"name": "张三",
"age": 18
}
# 添加性别
student["gender"] = "男"
print(student) # 输出:{'name': '张三', 'age': 18, 'gender': '男'}
# 添加地址
student["address"] = "北京市"
print(student) # 输出:{'name': '张三', 'age': 18, 'gender': '男', 'address': '北京市'}
student = {
"name": "张三",
"age": 18,
"gender": "男"
}
# 删除"gender"键值对
del student["gender"]
print(student) # 输出:{'name': '张三', 'age': 18}
# 删除整个字典(删除后字典不再存在)
# del student
student = {
"name": "张三",
"age": 18,
"score": 90
}
# 删除"score"键值对,并返回值
score = student.pop("score")
print(score) # 输出:90
print(student) # 输出:{'name': '张三', 'age': 18}
# 删除不存在的键,指定默认值
gender = student.pop("gender", "未知")
print(gender) # 输出:未知
student = {
"name": "张三",
"age": 18
}
student.clear()
print(student) # 输出:{}
student = {"name": "张三", "age": 18, "score": 90}
print(len(student)) # 输出:3
student = {"name": "张三", "age": 18, "score": 90}
keys = student.keys()
print(keys) # 输出:dict_keys(['name', 'age', 'score'])
# 转换为列表
print(list(keys)) # 输出:['name', 'age', 'score']
student = {"name": "张三", "age": 18, "score": 90}
values = student.values()
print(values) # 输出:dict_values(['张三', 18, 90])
# 转换为列表
print(list(values)) # 输出:['张三', 18, 90]
student = {"name": "张三", "age": 18, "score": 90}
items = student.items()
print(items) # 输出:dict_items([('name', '张三'), ('age', 18), ('score', 90)])
# 转换为列表
print(list(items)) # 输出:[('name', '张三'), ('age', 18), ('score', 90)]
student = {"name": "张三", "age": 18}
other_info = {"score": 90, "age": 19}
student.update(other_info)
print(student) # 输出:{'name': '张三', 'age': 19, 'score': 90}
遍历字典主要有以下几种方式:遍历键、遍历值、遍历键值对。
student = {"name": "张三", "age": 18, "score": 90}
# 方法1:直接遍历字典(默认遍历键)
for key in student:
print(key)
# 方法2:使用keys()方法
for key in student.keys():
print(key)
运行结果(两种方法相同):
name
age
score
student = {"name": "张三", "age": 18, "score": 90}
for value in student.values():
print(value)
运行结果:
张三
18
90
student = {"name": "张三", "age": 18, "score": 90}
for key, value in student.items():
print(f"{key}: {value}")
运行结果:
name: 张三
age: 18
score: 90
字典推导式是一种简洁的创建字典的方式,语法如下:
{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件表达式}
字典推导式的执行过程是:遍历可迭代对象中的每个元素,当条件表达式为True时,将键表达式和值表达式的结果作为键值对添加到新字典中。
示例:
# 创建一个键为1-5的整数,值为对应整数平方的字典
squares = {x: x **2 for x in range(1, 6)}
print(squares) # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# 从列表中创建字典,筛选出值为偶数的键值对
numbers = [1, 2, 3, 4, 5, 6]
even_squares = {x: x** 2 for x in numbers if x % 2 == 0}
print(even_squares) # 输出:{2: 4, 4: 16, 6: 36}
# 交换字典的键和值
original = {"a": 1, "b": 2, "c": 3}
swapped = {v: k for k, v in original.items()}
print(swapped) # 输出:{1: 'a', 2: 'b', 3: 'c'}
字典可以嵌套,即字典中的值可以是另一个字典。嵌套字典常用于表示更复杂的数据结构。
示例:存储多个学生的信息
students = {
"student1": {
"name": "张三",
"age": 18,
"score": 90
},
"student2": {
"name": "李四",
"age": 19,
"score": 85
},
"student3": {
"name": "王五",
"age": 17,
"score": 95
}
}
# 访问嵌套字典中的元素
print(students["student1"]["name"]) # 输出:张三
print(students["student3"]["score"]) # 输出:95
# 遍历嵌套字典
for student_id, info in students.items():
print(f"学号:{student_id}")
for key, value in info.items():
print(f" {key}: {value}")
运行结果:
学号:student1
name: 张三
age: 18
score: 90
学号:student2
name: 李四
age: 19
score: 85
学号:student3
name: 王五
age: 17
score: 95
统计一段文本中每个单词出现的次数。
text = "I love Python Python is a great language I love coding with Python"
# 将文本转换为小写并按空格分割成单词列表
words = text.lower().split()
# 创建一个字典用于统计单词出现次数
word_count = {}
# 遍历单词列表,统计次数
for word in words:
# 如果单词已在字典中,次数加1;否则,添加到字典,次数设为1
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 打印统计结果
print("单词出现次数统计:")
for word, count in word_count.items():
print(f"{word}: {count}次")
运行结果:
单词出现次数统计:
i: 2次
love: 2次
python: 3次
is: 1次
a: 1次
great: 1次
language: 1次
coding: 1次
with: 1次
本章我们学习了 Python 中的字典,包括字典的创建、元素访问(通过键或get()方法)、修改元素、添加和删除元素等操作,还学习了字典的遍历方式、字典推导式和嵌套字典。
字典以键值对的形式存储数据,通过键可以快速访问对应的值,这使得它在处理具有关联关系的数据时非常高效。与列表、元组相比,字典的最大优势是查找速度快,适合存储需要频繁根据 “键” 查询 “值” 的数据。
下一章,我们将学习 Python 中的集合,它是一种用于存储唯一元素的数据结构。
相关文章
您好:这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人...
2025-08-14 0
亲,这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到-人的牌一样。所以很多小伙伴就怀疑这...
2025-08-14 0
说起苹果在研发折叠屏手机这件事,早已不是什么秘密,在过去几年间,折叠屏 iPhone 的相关传闻就没停过,专利先后公布过数次。不过从今年开始,有关折叠...
2025-08-14 0
“检查完毕,可以起飞!”8月5日上午10点48分,在南通兴东国际机场(以下简称“南通机场”)机务工程部机务科班组长赵俊敏的指挥下,从南通飞往北京首都的...
2025-08-14 0
近日,宝武特冶特种冶金材料新基地(宝山基地 项目现场传来好消息!由宝钢工程轧钢事业部负责总体设计并提供EP供货的锻造工序中,5座加热炉和2台均质化...
2025-08-14 0
来源:【西安日报】8月13日,陕西省发布《关于2024年度陕西省科学技术奖励的决定》,公布了荣获2024年度陕西省科学技术奖励的成果和个人。9名科研人...
2025-08-14 0
GB 3836-2021 新版防爆标识深度解析——全面掌握核心变化与实战应用一、新旧标准标识体系对比全景图要素GB 3836-2010 旧版GB 38...
2025-08-14 0
发表评论