Python 字典(dict)和集合(set)新手指南

一、字典(dict)基础

什么是字典?

字典就像现实中的字典一样,通过"键(key)"快速查找对应的"值(value)"。

# 创建字典
student_scores = {"小明": 90, "小红": 85, "小刚": 92}

# 查找成绩
print(student_scores["小明"])  # 输出: 90

为什么字典查找快?

字典使用哈希表实现,查找速度是O(1)级别,不会随着数据量增加而变慢。

二、字典常用操作

1. 添加/修改元素

# 添加新学生
student_scores["小李"] = 88

# 修改成绩
student_scores["小明"] = 95

2. 检查键是否存在

if "小红" in student_scores:
    print("小红在班级中")

# 安全获取
score = student_scores.get("小张", 0)  # 不存在返回0

3. 删除元素

removed_score = student_scores.pop("小刚")  # 删除并返回值

4. 遍历字典

# 遍历所有键值对
for name, score in student_scores.items():
    print(f"{name}: {score}")

# 只遍历键
for name in student_scores.keys():
    print(name)

# 只遍历值
for score in student_scores.values():
    print(score)

三、集合(set)基础

什么是集合?

集合是一组不重复且无序的元素。

# 创建集合
fruit_set = {"apple", "banana", "orange"}

# 自动去重
unique_numbers = {1, 2, 2, 3, 3}  # 变为{1, 2, 3}

四、集合常用操作

1. 添加/删除元素

fruit_set.add("grape")  # 添加
fruit_set.remove("banana")  # 删除(不存在会报错)
fruit_set.discard("melon")  # 安全删除(不存在不报错)

2. 集合运算

a = {1, 2, 3}
b = {2, 3, 4}

print(a | b)  # 并集: {1, 2, 3, 4}
print(a & b)  # 交集: {2, 3}
print(a - b)  # 差集: {1}

3. 集合判断

print({1, 2} <= {1, 2, 3})  # 子集判断: True
print(2 in a)  # 存在判断: True

五、不可变对象规则

字典的键和集合的元素必须是不可变类型:

  • 允许:字符串、数字、元组

  • 禁止:列表、字典、集合

# 正确示例
valid_dict = {("北京", "上海"): "城市", 42: "答案"}

# 错误示例
invalid_dict = {["a", "b"]: "列表"}  # 报错

六、实际应用案例

1. 词频统计

text = "apple banana apple orange banana apple"
words = text.split()
word_count = {}

for word in words:
    word_count[word] = word_count.get(word, 0) + 1

print(word_count)  # {'apple': 3, 'banana': 2, 'orange': 1}

2. 好友关系管理

friends = {
    "小明": {"小红", "小刚"},
    "小红": {"小明", "小丽"},
    "小刚": {"小明"}
}

# 添加好友
friends["小明"].add("小丽")

# 共同好友
common = friends["小明"] & friends["小红"]  # {"小红"}

七、常见问题解答

  • 为什么字典键必须是不可变的?

    • 因为字典通过键的哈希值来存储数据,可变对象的哈希值会变化

  • 集合和列表有什么区别?

    • 集合:无序、不重复、查找快

    • 列表:有序、可重复、按顺序存储

  • 如何选择使用字典还是集合?

    • 需要存储键值对 → 字典

    • 只需要存储唯一元素 → 集合

  • 字典和JSON有什么关系?

    • Python字典和JSON格式可以互相转换

    • import json; json_data = json.dumps(my_dict)

记住:字典和集合是Python中非常高效的数据结构,合理使用可以大幅提升程序性能!

你可能感兴趣的:(Python 字典(dict)和集合(set)新手指南)