一、特点分析
- dict优势
dict查找和插入速度极快,不会随着key的增加而变慢
需要占用大量的内存
- list优势
查找和插入的时间随着元素的增加而增加
占用空间小,节省内存
set与dict的原理是一样的,只是没有存储value
二、快速记忆卡片
字典记忆卡片:
1. 创建:{} 或 dict()
2. 访问:dict['key'] 或 dict.get('key', default)
3. 修改:dict['key'] = value
4. 删除:pop(), del, clear()
5. 遍历:for key in dict: 或 for key, value in dict.items():
集合记忆卡片:
1. 创建:{} 或 set()
2. 添加:add(), update()
3. 删除:remove(), discard(), pop(), clear()
4. 运算:| (并), & (交), - (差), ^ (对称差)
5. 判断:in, issubset(), issuperset()
特点记忆:
1、字典的核心特性记忆:
- "键值对"存储
- "花括号+冒号" {'key': value}
- "唯一键"原则
2、集合的核心特性记忆:
- "无序无重复"
- "花括号"表示 {1, 2, 3}
- "数学集合"操作
3、记忆强化
# 字典CRUD操作记忆法:
dict1['key'] = value # Create/Update: 直接赋值
dict1['key'] # Read: 直接访问
dict1.get('key', 默认值) # Read: 安全访问
dict1.pop('key') # Delete: 删除并返回值
# 集合CRUD操作记忆法:
set1.add(item) # Create: 添加单个
set1.update([items]) # Create: 添加多个
item in set1 # Read: 成员判断
set1.remove(item) # Delete: 删除(不存在报错)
set1.discard(item) # Delete: 删除(不存在不报错)
代码讲解
# ============= 1. 字典(Dict)基础操作 =============
def dict_basic_operations():
"""字典基本操作示例"""
# 创建字典的几种方式
dict1 = {"name": "张三", "age": 18} # 直接创建
dict2 = dict(name="李四", age=20) # 使用dict()创建
dict3 = dict([("name", "王五"), ("age", 22)]) # 从列表创建
# 1. 访问和修改
print(dict1["name"]) # 访问元素:张三
dict1["age"] = 19 # 修改元素
dict1["score"] = 100 # 添加新元素
# 2. 安全访问(推荐)
age = dict1.get("age", 0) # 如果key不存在,返回默认值0
# 3. 删除操作
removed_value = dict1.pop("score") # 删除并返回值
del dict1["age"] # 直接删除
last_item = dict1.popitem() # 删除并返回最后一项
dict1.clear() # 清空字典
# ============= 2. 字典高级操作 =============
def dict_advanced_operations():
"""字典高级操作示例"""
student = {"name": "张三", "age": 18, "score": 95}
# 1. 遍历操作
for key in student: # 遍历键
print(key)
for key, value in student.items(): # 遍历键值对
print(f"{key}: {value}")
# 2. 字典合并
info1 = {"name": "张三"}
info2 = {"age": 18}
info1.update(info2) # 合并字典
# 3. 字典推导式
squares = {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16}
# ============= 3. 集合(Set)基础操作 =============
def set_basic_operations():
"""集合基本操作示例"""
# 创建集合
set1 = {1, 2, 3} # 直接创建
set2 = set([1, 2, 2, 3, 3]) # 从列表创建(自动去重)
# 1. 添加和删除
set1.add(4) # 添加单个元素
set1.update([5, 6, 7]) # 添加多个元素
set1.remove(4) # 删除元素(元素不存在会报错)
set1.discard(4) # 删除元素(元素不存在不报错)
set1.pop() # 随机删除并返回一个元素
set1.clear() # 清空集合
# ============= 4. 集合高级操作 =============
def set_advanced_operations():
"""集合高级操作示例"""
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
# 1. 集合运算
print(A | B) # 并集:{1,2,3,4,5,6}
print(A & B) # 交集:{3,4}
print(A - B) # 差集:{1,2}
print(A ^ B) # 对称差集:{1,2,5,6}
# 2. 集合推导式
squares = {x**2 for x in range(5)} # {0,1,4,9,16}
# 3. 集合判断
print(1 in A) # 成员判断
print(A.issubset(B)) # 子集判断
print(A.issuperset(B)) # 超集判断
# ============= 5. 实际应用示例 =============
def practical_examples():
"""实际应用示例"""
# 示例1:学生成绩管理
scores = {
"张三": {"语文": 80, "数学": 90, "英语": 85},
"李四": {"语文": 85, "数学": 95, "英语": 88},
}
# 获取张三的数学成绩
math_score = scores["张三"].get("数学", 0)
# 示例2:词频统计
text = "hello world hello python"
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
# 示例3:去重列表
numbers = [1, 2, 2, 3, 3, 4]
unique_numbers = list(set(numbers))
# ============= 6. 快速记忆卡片 =============
"""
字典记忆卡片:
1. 创建:{} 或 dict()
2. 访问:dict['key'] 或 dict.get('key', default)
3. 修改:dict['key'] = value
4. 删除:pop(), del, clear()
5. 遍历:for key in dict: 或 for key, value in dict.items():
集合记忆卡片:
1. 创建:{} 或 set()
2. 添加:add(), update()
3. 删除:remove(), discard(), pop(), clear()
4. 运算:| (并), & (交), - (差), ^ (对称差)
5. 判断:in, issubset(), issuperset()
"""
def main():
"""主函数:运行所有示例"""
print("=== 字典基础操作 ===")
dict_basic_operations()
print("\n=== 字典高级操作 ===")
dict_advanced_operations()
print("\n=== 集合基础操作 ===")
set_basic_operations()
print("\n=== 集合高级操作 ===")
set_advanced_operations()
print("\n=== 实际应用示例 ===")
practical_examples()
if __name__ == "__main__":
main()
打印结果:
=== 字典基础操作 ===
张三
=== 字典高级操作 ===
name
age
score
name: 张三
age: 18
score: 95
=== 集合基础操作 ===
=== 集合高级操作 ===
{1, 2, 3, 4, 5, 6}
{3, 4}
{1, 2}
{1, 2, 5, 6}
True
False
False
=== 实际应用示例 ===