当前位置: 首页 > news >正文

【30天玩转python】字典与集合

字典与集合

Python 中,字典(dict)和集合(set)是两个非常重要的内置数据类型。字典是键值对的集合,而集合是无序的唯一元素集合。本节将介绍字典和集合的基本用法和常见操作。


1. 字典

1.1 字典的定义

字典是一种可变的、无序的数据结构,存储键值对(key-value pair)。字典的键必须是唯一且不可变的(如字符串、数字、元组),而值可以是任何数据类型。字典使用大括号 {} 表示,键和值之间用冒号 : 分隔。

my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict)

输出结果:

{'name': 'Alice', 'age': 25, 'city': 'New York'}
1.2 访问字典元素

通过键来访问字典中的值。如果键不存在,会引发 KeyError

print(my_dict["name"])  # 输出:Alice

可以使用 get() 方法访问元素,这种方法在键不存在时不会引发错误,而是返回 None 或指定的默认值。

print(my_dict.get("age"))  # 输出:25
print(my_dict.get("address", "未找到该键"))  # 输出:未找到该键
1.3 修改字典

字典是可变的,因此可以通过指定键来修改字典的值。

my_dict["age"] = 30
print(my_dict)  # 输出:{'name': 'Alice', 'age': 30, 'city': 'New York'}
1.4 添加元素

向字典中添加新的键值对。

my_dict["address"] = "123 Street"
print(my_dict)  # 输出:{'name': 'Alice', 'age': 30, 'city': 'New York', 'address': '123 Street'}
1.5 删除元素

可以使用 del 关键字或 pop() 方法从字典中删除指定的键值对。

del my_dict["city"]
print(my_dict)  # 输出:{'name': 'Alice', 'age': 30, 'address': '123 Street'}my_dict.pop("address")
print(my_dict)  # 输出:{'name': 'Alice', 'age': 30}
1.6 字典的常用方法
  1. keys():返回字典中所有键的视图。

    print(my_dict.keys())  # 输出:dict_keys(['name', 'age'])
    
  2. values():返回字典中所有值的视图。

    print(my_dict.values())  # 输出:dict_values(['Alice', 30])
    
  3. items():返回字典中所有键值对的视图。

    print(my_dict.items())  # 输出:dict_items([('name', 'Alice'), ('age', 30)])
    
  4. update():将另一个字典或键值对更新到当前字典。

    my_dict.update({"city": "San Francisco", "phone": "123-456-7890"})
    print(my_dict)  # 输出:{'name': 'Alice', 'age': 30, 'city': 'San Francisco', 'phone': '123-456-7890'}
    
  5. clear():清空字典。

    my_dict.clear()
    print(my_dict)  # 输出:{}
    

2. 集合

2.1 集合的定义

集合是一种无序且元素唯一的数据结构。集合中的元素必须是不可变的(如字符串、数字、元组)。集合使用大括号 {} 表示,或者使用 set() 函数创建。

my_set = {1, 2, 3, 4, 5}
print(my_set)  # 输出:{1, 2, 3, 4, 5}

如果需要创建空集合,必须使用 set(),因为空的 {} 是空字典。

empty_set = set()
print(type(empty_set))  # 输出:<class 'set'>
2.2 集合的特点
  • 无序:集合中的元素没有特定的顺序。
  • 唯一性:集合中的每个元素都是唯一的,重复元素会被自动去重。
my_set = {1, 2, 2, 3}
print(my_set)  # 输出:{1, 2, 3}
2.3 集合的常用操作
  1. 添加元素
    使用 add() 方法向集合中添加元素。

    my_set = {1, 2, 3}
    my_set.add(4)
    print(my_set)  # 输出:{1, 2, 3, 4}
    
  2. 删除元素
    使用 remove() 方法删除集合中的指定元素,如果元素不存在,会引发 KeyError

    my_set.remove(2)
    print(my_set)  # 输出:{1, 3, 4}
    

    使用 discard() 方法删除元素,如果元素不存在不会引发错误。

    my_set.discard(5)  # 不会报错
    
  3. 集合的长度
    使用 len() 函数可以获取集合的大小。

    print(len(my_set))  # 输出:3
    
  4. 清空集合
    使用 clear() 方法清空集合。

    my_set.clear()
    print(my_set)  # 输出:set()
    
2.4 集合的常见操作
  1. 集合的并集
    使用 union()| 运算符获取两个集合的并集(包含两个集合中的所有元素)。

    set1 = {1, 2, 3}
    set2 = {3, 4, 5}
    print(set1.union(set2))  # 输出:{1, 2, 3, 4, 5}
    print(set1 | set2)  # 输出:{1, 2, 3, 4, 5}
    
  2. 集合的交集
    使用 intersection()& 运算符获取两个集合的交集(两个集合中共同的元素)。

    print(set1.intersection(set2))  # 输出:{3}
    print(set1 & set2)  # 输出:{3}
    
  3. 集合的差集
    使用 difference()- 运算符获取集合的差集(存在于第一个集合但不在第二个集合中的元素)。

    print(set1.difference(set2))  # 输出:{1, 2}
    print(set1 - set2)  # 输出:{1, 2}
    
  4. 集合的对称差
    使用 symmetric_difference()^ 运算符获取两个集合的对称差(两个集合中不重复的元素)。

    print(set1.symmetric_difference(set2))  # 输出:{1, 2, 4, 5}
    print(set1 ^ set2)  # 输出:{1, 2, 4, 5}
    
2.5 集合的遍历

可以使用 for 循环遍历集合中的元素。

my_set = {1, 2, 3, 4}
for item in my_set:print(item)

3. 字典与集合的区别

特性字典 (dict)集合 (set)
元素存储方式键值对(key-value pair)唯一元素集合
是否有序Python 3.7+ 中为插入顺序(以前版本为无序)无序
可变性键和值都可以修改元素可修改
元素是否唯一键必须唯一,值可以重复元素必须唯一
常用用途存储和快速查找键值对集合操作、去重及集合运算

4. 小结

字典和集合是 Python 中强大的数据结构。字典主要用于存储键值对,支持高效的查找操作;集合则用于存储唯一值,提供了丰富的集合运算功能。在日常编程中,理解并掌握字典和集合的用法可以极大提升程序的性能和可读性。


http://www.mrgr.cn/news/22548.html

相关文章:

  • k8s--资源管理
  • windows手工杀毒-寻找可疑进程之内存
  • 1986-2015年 中国城镇住户调查微观数据UHS
  • Oracle(114)什么是增量备份(Incremental Backup)?
  • C++如何设计函数多返回值以及如何加速输入输出效率
  • TensorFlow
  • 无人机专业大学,除了理论还必须会组装、调试、硬件才更好就业
  • 【数据结构】排序算法系列——选择排序(附源码+图解)
  • 华为OD机试真题 - 考古学家 - 递归(Python/JS/C/C++ 2024 D卷 200分)
  • Exchange 服务器存档配额配置方法及注意事项
  • 手撕Python之生成器、装饰器、异常
  • Linux压缩、解压缩、查看压缩内容详解使用(tar、gzip、bzip2、xz、jar、war、aar)
  • Python知识点:如何使用Python进行Excel文件操作(OpenPyXL、Pandas)
  • 【文档规范】嵌入式软件代码开发测试文档
  • AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出
  • tensorflow-MLP python入门
  • 【LVI-SAM】激光雷达点云地图优化LIO-SAM 之mapOptimization实现细节
  • Maven项目父模块POM中不应包含实际依赖(dependency)
  • 详细分析Mysql配置文件路径的查找(多种方法)
  • 详细分析linux中的MySql跳过密码验证以及Bug(图文)