Python教程:深入了解 Python 中 Dict、List、Tuple、Set 的高级用法

简介: Python 中的 Dict(字典)、List(列表)、Tuple(元组)和 Set(集合)是常用的数据结构,它们各自有着不同的特性和用途。在本文中,我们将深入了解这些数据结构的高级用法,并提供详细的说明和代码示例。

 一.使用方法介绍


Python 中的 Dict(字典)、List(列表)、Tuple(元组)和 Set(集合)是常用的数据结构,它们各自有着不同的特性和用途。在本文中,我们将深入了解这些数据结构的高级用法,并提供详细的说明和代码示例。

1. 字典(Dict)

字典是一种无序的、可变的、键值对(key-value)集合,其中的键必须是唯一的。字典提供了高效的键值对查找和修改功能。

高级用法:

  • 字典推导式
  • 使用 collections.defaultdict
  • 使用 collections.Counter
# 字典推导式
squares = {x: x*x for x in range(1, 6)}
print(squares)
# 使用 collections.defaultdict
from collections import defaultdict
d = defaultdict(list)
d['group1'].append('value1')
print(d)
# 使用 collections.Counter
from collections import Counter
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts)

image.gif

2. 列表(List)

列表是一种有序的、可变的序列,其中的元素可以是任意类型。列表提供了丰富的操作方法,如添加、删除、切片等。

高级用法:

  • 列表推导式
  • 使用 enumerate 获取索引和值
  • 使用 zip 合并列表
# 列表推导式
evens = [x for x in range(10) if x % 2 == 0]
print(evens)
# 使用 enumerate 获取索引和值
fruits = ['apple', 'banana', 'orange']
for index, value in enumerate(fruits):
    print(index, value)
# 使用 zip 合并列表
names = ['Alice', 'Bob', 'Charlie']
ages = [30, 25, 35]
for name, age in zip(names, ages):
    print(name, age)

image.gif

3. 元组(Tuple)

元组是一种有序的、不可变的序列,类似于列表但是不可修改。元组通常用于存储不可变的数据集合。

高级用法:

  • 解构赋值
  • 使用 * 操作符解包
# 解构赋值
point = (3, 4)
x, y = point
print(x, y)
# 使用 * 操作符解包
numbers = (1, 2, 3, 4, 5)
first, *rest, last = numbers
print(first, last)

image.gif

4. 集合(Set)

集合是一种无序的、不重复的元素集合,类似于数学中的集合概念。集合提供了高效的成员检查和集合操作。

高级用法:

  • 集合操作:并集、交集、差集、对称差集
  • 集合推导式
# 集合操作
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print("并集:", set1 | set2)
print("交集:", set1 & set2)
print("差集:", set1 - set2)
print("对称差集:", set1 ^ set2)
# 集合推导式
squares_set = {x*x for x in range(1, 6)}
print(squares_set)

image.gif

二.Python 中 Dict、List、Tuple、Set 之间的相互转换


1. Dict(字典)转换为其他数据结构

1.1. Dict 转换为 List:

my_dict = {'a': 1, 'b': 2, 'c': 3}
dict_to_list = list(my_dict.items())
print(dict_to_list)

image.gif

1.2. Dict 转换为 Tuple:

my_dict = {'a': 1, 'b': 2, 'c': 3}
dict_to_tuple = tuple(my_dict.items())
print(dict_to_tuple)

image.gif

1.3. Dict 转换为 Set:

my_dict = {'a': 1, 'b': 2, 'c': 3}
dict_to_set = set(my_dict.items())
print(dict_to_set)

image.gif

2. List(列表)转换为其他数据结构

2.1. List 转换为 Dict:

my_list = [('a', 1), ('b', 2), ('c', 3)]
list_to_dict = dict(my_list)
print(list_to_dict)

image.gif

2.2. List 转换为 Tuple:

my_list = [1, 2, 3]
list_to_tuple = tuple(my_list)
print(list_to_tuple)

image.gif

2.3. List 转换为 Set:

my_list = [1, 2, 2, 3, 3, 4]
list_to_set = set(my_list)
print(list_to_set)

image.gif

3. Tuple(元组)转换为其他数据结构

3.1. Tuple 转换为 Dict:

my_tuple = (('a', 1), ('b', 2), ('c', 3))
tuple_to_dict = dict(my_tuple)
print(tuple_to_dict)

image.gif

3.2. Tuple 转换为 List:

my_tuple = (1, 2, 3)
tuple_to_list = list(my_tuple)
print(tuple_to_list)

image.gif

3.3. Tuple 转换为 Set:

my_tuple = (1, 2, 2, 3, 3, 4)
tuple_to_set = set(my_tuple)
print(tuple_to_set)

image.gif

4. Set(集合)转换为其他数据结构

4.1. Set 转换为 Dict:

注意:Set 中的元素必须是可哈希的,因此只能转换包含元组的集合。

my_set = {('a', 1), ('b', 2), ('c', 3)}
set_to_dict = dict(my_set)
print(set_to_dict)

image.gif

4.2. Set 转换为 List 或 Tuple:

由于 Set 是无序的,转换为 List 或 Tuple 时顺序不确定,可以通过排序使结果有序。

my_set = {1, 2, 3}
set_to_list = sorted(list(my_set))
set_to_tuple = tuple(sorted(my_set))
print(set_to_list)
print(set_to_tuple)

image.gif

三.实战应用


下面的示例代码,这是一个简单的学生管理系统,用于记录学生的信息,并实现一些功能,如添加学生、删除学生、按姓名查找学生等。这个示例会展示如何使用 Python 的 Dict、List、Tuple、Set 以及它们之间的相互转换。

class StudentManagementSystem:
    def __init__(self):
        self.students = []  # 学生列表,每个学生以字典形式存储
        self.student_set = set()  # 学生集合,用于快速查找学生是否存在
    def add_student(self, name, age, grade):
        student = {'name': name, 'age': age, 'grade': grade}
        self.students.append(student)
        self.student_set.add((name, age))  # 使用元组作为集合元素,保证唯一性
    def remove_student(self, name):
        for student in self.students:
            if student['name'] == name:
                self.students.remove(student)
                self.student_set.remove((student['name'], student['age']))
                return True
        return False
    def find_student_by_name(self, name):
        for student in self.students:
            if student['name'] == name:
                return student
        return None
    def display_all_students(self):
        for student in self.students:
            print(student)
    def get_students_set(self):
        return self.student_set
# 示例用法
sms = StudentManagementSystem()
# 添加学生
sms.add_student('Alice', 20, 'A')
sms.add_student('Bob', 21, 'B')
sms.add_student('Charlie', 22, 'C')
# 显示所有学生信息
print("所有学生信息:")
sms.display_all_students()
# 按姓名查找学生
print("\n按姓名查找学生:")
print(sms.find_student_by_name('Bob'))
# 删除学生
sms.remove_student('Bob')
print("\n删除学生后的所有学生信息:")
sms.display_all_students()
# 将学生集合转换为列表
student_set_as_list = sorted(list(sms.get_students_set()))
print("\n将学生集合转换为列表并排序:")
print(student_set_as_list)

image.gif


目录
相关文章
|
9月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
499 2
|
11月前
|
存储 索引 Python
python tuple的所有基础知识
python tuple的所有基础知识
874 0
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
python torch基础用法
本教程系统讲解PyTorch基础,涵盖张量操作、自动求导、神经网络构建、训练流程、GPU加速及模型保存等核心内容,结合代码实例帮助初学者快速掌握深度学习开发基础,是入门PyTorch的实用指南。
875 6
|
9月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
374 4
|
11月前
|
Go 调度 Python
Golang协程和Python协程用法上的那些“不一样”
本文对比了 Python 和 Go 语言中协程的区别,重点分析了调度机制和执行方式的不同。Go 的协程(goroutine)由运行时自动调度,启动后立即执行;而 Python 协程需通过 await 显式调度,依赖事件循环。文中通过代码示例展示了两种协程的实际运行效果。
420 7
|
人工智能 数据库连接 API
掌握Python的高级用法:技巧、技术和实用性示例
本文分享了Python的高级用法,包括生成器、装饰器、上下文管理器、元类和并发编程等。生成器通过`yield`实现懒加载序列;装饰器用于增强函数功能,如添加日志或性能分析;上下文管理器借助`with`语句管理资源;元类动态定制类行为;并发编程利用`threading`和`asyncio`库提升任务执行效率。掌握这些高级概念可优化代码质量,解决复杂问题,提高程序性能与可维护性。
352 6
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
598 14
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
2608 2

热门文章

最新文章

推荐镜像

更多