news 2026/4/16 11:06:17

Python中的数据序列其二

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python中的数据序列其二

目录

前言

一、字典

1、为什么需要字典(dict)

2、Python中字典(dict)的概念

3.字典的增删改查操作

增操作(重点)

删操作

改操作

查操作

综合案例

二、集合

1.什么是集合

2.集合的定义

3.集合操作的相关方法(增删查)

增操作

删操作

查操作

三、数据序列中的公共方法

1.什么是公共方法

2.常见公共方法

3.容器类型之间的相互转换


前言

在Python编程中,字典(dict)、集合(set)和序列(列表list、元组tuple)是三种最常用的数据结构。虽然它们各自有独特的特点和用途,但Python为它们设计了许多相似的公共方法,这体现了Python语言设计的一致性。掌握这些公共方法不仅能提高代码效率,还能让我们的编程思维更加清晰。


一、字典

1、为什么需要字典(dict)

字典是Python中唯一的内置映射类型,它存储键值对,键必须是不可变类型(如字符串、数字、元组),而值可以是任意类型。字典中的键是唯一的,但值可以重复。

2、Python中字典(dict)的概念

特点:

  1. 符号为大括号(花括号)=> {}
  2. 数据为键值对形式出现 => {key:value},key:键名,value:值,在同一个字典中,key必须是唯一(类似于索引下标)
  3. 各个键值对之间用逗号隔开

定义:

# 有数据字典 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'} # 空字典 dict2 = {} dict3 = dict() print(dict1) # {'name': 'Tom', 'age': 20, 'gender': '男'} print(dict2) # {} print(dict3) # {}

在Python代码中,字典中的key必须使用引号引起来

3.字典的增删改查操作

增操作(重点)

基本语法:

字典名称[key] = value

注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

案例:

# 1、定义⼀个空字典 person = {} # 2、向字典中添加数据 person['name'] = '刘备' person['age'] = 40 person['address'] = '蜀中' # 3、使⽤print⽅法打印person字典 print(person) # {'name': '刘备', 'age': 40, 'address': '蜀中'}

删操作

  • del 字典名称[key]:删除指定元素
# 1、定义⼀个有数据的字典 person = {'name': '王⼤锤', 'age': 28, 'gender': 'male', 'address': '⻓沙市岳麓区' } # 2、删除字典中的某个元素(如gender) del person['gender'] # 3、打印字典 print(person) # {'name': '王⼤锤', 'age': 28, 'address': '⻓沙市岳麓区'}
  • clear()方法:清空字典中的所有key
# 1、定义⼀个有数据的字典 person = {'name': '王⼤锤', 'age': 28, 'gender': 'male', 'address': '⻓沙市岳麓区' } # 2、使⽤clear()⽅法清空字典 person.clear() # 3、打印字典 print(person) # {}

改操作

基本语法:

字典名称[key] = value

注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

案例:

# 1、定义字典 person = {'name': '孙悟空', 'age': 600, 'address': '花果⼭'} # 2、修改字典中的数据(address) person['address'] = '东⼟⼤唐' # 3、打印字典 print(person) # {'name': '孙悟空', 'age': 600, 'address': '东⼟⼤唐'}

查操作

  • 查询方法:使用具体的某个key查询数据,如果未找到,则直接报错。

字典序列[key]

  • 字典的相关查询方法
  1. keys():以列表返回⼀个字典所有的键
  2. values():以列表返回字典中的所有值
  3. items():以列表返回可遍历的(键, 值) 元组 数据
  4. enumerate():把⼀个容器类型(如列表)的数据 构改造成key:value结构

案例1:提取person字典中的所有key

# 1、定义⼀个字典 person = {'name': '貂蝉', 'age': 18, 'mobile': '13765022249'} # 2、提取字典中的name、age以及mobile属性 print(person.keys()) # dict_keys(['name', 'age', 'mobile'])

案例2:提取person字典中的所有value值

# 1、定义⼀个字典 person = {'name': '貂蝉', 'age': 18, 'mobile': '13765022249'} # 2、提取字典中的貂蝉、18以及13765022249号码 print(person.values()) # dict_values({'貂蝉', 18, '13765022249'})

案例3:使用items()方法提取数据

# 1、定义⼀个字典 person = {'name': '貂蝉', 'age': 18, 'mobile': '13765022249'} # 2、调⽤items⽅法获取数据,dict_items([('name', '貂蝉'), ('age', 18), ('mobile', '13765022249')]) # print(person.items()) # 3、结合for循环对字典中的数据进⾏遍历 for key, value in person.items(): print(f'{key}:{value}') # name:貂蝉 # age:18 # mobile:13765022249

案例4:enumerate(),把一个容器类型(如列表)的数据构造成key:value结构

list1 = [10, 20, 30, 40, 50] n = 1 for i in list1: print(f'第{n}个数:{i}') n += 1 print('-' * 40) for key, value in enumerate(list1): print(f'第{key + 1}个数:{value}') # 第1个数:10 # 第2个数:20 # 第3个数:30 # 第4个数:40 # 第5个数:50 # ---------------------------------------- # 第1个数:10 # 第2个数:20 # 第3个数:30 # 第4个数:40 # 第5个数:50

综合案例

# 初始化学生列表 students = [] def student_input(): """获取学生姓名输入""" name = input("请输入学生的姓名:") return name def add_student(): """添加学生信息""" print("\n--- 添加学生信息 ---") name = input("请输入学生的姓名:") age = int(input("请输入学生的年龄:")) score = int(input("请输入学生的成绩:")) student = {"name": name, "age": age, "score": score} students.append(student) print(f"学生 {name} 添加成功!") def query_student(): """查询学生信息""" print("\n--- 查询学生信息 ---") name = input("请输入学生的姓名:") for student in students: if student["name"] == name: print("=" * 30) print(f"姓名: {student['name']}") print(f"年龄: {student['age']}") print(f"成绩: {student['score']}") print("=" * 30) break else: print("没有该学生") def modify_student(): """修改学生信息""" print("\n--- 修改学生信息 ---") name = student_input() found = False for student in students: if student["name"] == name: print(f"找到学生 {name},当前信息:") print(f"姓名: {student['name']}, 年龄: {student['age']}, 成绩: {student['score']}") # 获取新的信息 new_age = input("请输入新的年龄(直接回车保持原值): ") if new_age: student["age"] = int(new_age) new_score = input("请输入新的成绩(直接回车保持原值): ") if new_score: student["score"] = int(new_score) print(f"学生 {name} 信息修改成功!") found = True break if not found: print("没有该学生") def delete_student(): """删除学生信息""" print("\n--- 删除学生信息 ---") name = student_input() for i, student in enumerate(students): if student["name"] == name: print(f"找到学生 {name},确认删除吗? (y/n): ", end="") confirm = input().lower() if confirm == 'y': del students[i] print(f"学生 {name} 删除成功!") else: print("删除操作已取消") break else: print("没有该学生") def show_all_students(): """显示所有学生信息""" print("\n--- 所有学生信息 ---") if not students: print("暂无学生信息") return print("序号\t姓名\t年龄\t成绩") print("-" * 30) for i, student in enumerate(students, 1): print(f"{i}\t{student['name']}\t{student['age']}\t{student['score']}") # 显示统计信息 print("\n统计信息:") print(f"学生总数: {len(students)}") if students: avg_score = sum(s["score"] for s in students) / len(students) print(f"平均成绩: {avg_score:.1f}") def main(): """主程序""" print("=" * 60) print("学生信息管理系统") print("=" * 60) while True: print("\n" + "-" * 60) choice = input( "请输入您的操作:1.添加学生信息\t\t2.查询学生信息\t\t3.修改学生信息\t\t4.删除学生信息\t\t5.显示所有学生\t\t6.退出:") # 检查输入是否有效 if not choice.isdigit(): print("输入错误,请输入数字1-6") continue choice = int(choice) if choice == 1: add_student() elif choice == 2: query_student() elif choice == 3: modify_student() elif choice == 4: delete_student() elif choice == 5: show_all_students() elif choice == 6: print("感谢使用学生信息管理系统,再见!") break else: print("输入错误,请输入1-6之间的数字") # 运行程序 if __name__ == "__main__": main()

二、集合

1.什么是集合

集合(set)是一个无序的不重复元素序列。

  1. 天生去重
  2. 无序

2.集合的定义

在Python中,我们可以使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。

# 定义⼀个集合 s1 = {10, 20, 30, 40, 50} print(s1) # {10, 20, 30, 40, 50} print(type(s1)) # <class 'set'> # 定义⼀个集合:集合中存在相同的数据 s2 = {'刘备', '曹操', '孙权', '曹操'} print(s2) # {'刘备', '孙权', '曹操'} print(type(s1)) # <class 'set'> # 定义空集合 s3 = {} s4 = set() print(type(s3)) # <class 'dict'> print(type(s4)) # <class 'set'>

3.集合操作的相关方法(增删查)

增操作

add()方法:向集合中增加一个元素(单一)

students = set() students.add('张三') students.add('李四') print(students) # {'张三', '李四'}

删操作

remove()方法:删除集合中的指定数据,如果数据不存在则报错。

# 1、定义⼀个集合 products = {'萝⼘', '⽩菜', '⽔蜜桃', '奥利奥', '⻄红柿', '凤梨'} # 2、使⽤remove⽅法删除⽩菜这个元素 products.remove('⽩菜') print(products) # {'⽔蜜桃', '⻄红柿', '奥利奥', '萝⼘', '凤梨'}

查操作

  • in :判断某个元素是否在集合中,如果在,则返回True,否则返回False
  • not in :判断某个元素不在集合中,如果不在,则返回True,否则返回False
# 定义⼀个set集合 s1 = {'张三', '李四', '王五'} # 判断刘帅是否在s1集合中 if '张三' in s1: print('张三在s1集合中') else: print('张三没有出现在s1集合中')
  • 集合的遍历操作
# 定义⼀个set集合 s1 = {'张三', '李四', '王五'} for i in s1: print(i) # 王五 # 张三 # 李四

三、数据序列中的公共方法

1.什么是公共方法

所谓的公共方法就是支持大部分数据序列。

2.常见公共方法

  1. +:合并
  2. *:复制
  3. in:元素是否存在
  4. not in:元素是否存在
  5. max():返回容器中的最大值
  6. min():返回容器中的最小值

案例1:+ 合并

# 1、+加号,代表两个序列之间的连接与整合 str1 = 'hello' str2 = 'world' print(str1 + str2) # helloworld # 2、定义两个列表,对其数据进⾏整合 list1 = ['刘备', '关⽻'] list2 = ['诸葛亮', '赵云'] print(list1 + list2) # ['刘备', '关⽻', '诸葛亮', '赵云'] # 3、定义两个元组,对其数据进⾏整合 tuple1 = (10, 20) tuple2 = (30, 40) print(tuple1 + tuple2) # (10, 20, 30, 40)

案例2:* 复制,其中set与int类型不支持

# 1、字符串与乘号的关系 print('-' * 40) print('Python管理系统V1.0') print('-' * 40) # 2、列表与乘号的关系 list1 = ['*'] print(list1 * 10) # 3、元组与乘号的关系 tuple1 = (10, ) print(tuple1 * 10)

案例3:in与not in方法

ips = ['192.168.10.11', '10.1.1.100', '172.15.184.31'] if '10.1.1.100' in ips: print('列表中元素已存在') else: print('列表中元素不存在')

案例4:求某个序列中元素的最大值和最小值

num1 = int(input('请输⼊第⼀个数:')) num2 = int(input('请输⼊第⼆个数:')) num3 = int(input('请输⼊第三个数:')) list1 = [num1, num2, num3] max_num = max(list1) min_num = min(list1) print(f'最⼤值:{max_num}') print(f'最⼩值:{min_num}')

3.容器类型之间的相互转换

list()方法:把某个序列类型的数据转化为列表

# 1、定义元组类型的序列 tuple1 = (10, 20, 30) print(list(tuple1)) # [10, 20, 30] # 2、定义⼀个集合类型的序列 set1 = {'a', 'b', 'c', 'd'} print(list(set1)) # ['a', 'b', 'c', 'd']

tuple()方法:把某个序列类型的数据转化为元组

# 1、定义⼀个列表类型的数据 list1 = ['a', 'b', 'c', 'd'] print(tuple(list1)) # ('a', 'b', 'c', 'd') # 2、定义⼀个集合类型的数据 set1 = {10, 20, 30, 40} print(tuple(set1)) # (10, 20, 30, 40)

set()方法:将某个序列转换成集合

注意:

  1. 集合可以快速完成列表去重
  2. 集合不支持下标
# 1、定义⼀个列表类型的数据 list1 = ['a', 'b', 'c', 'd', 'a'] print(set(list1)) # {'b', 'a', 'd', 'c'} # 2、定义⼀个元组类型的数据 tuple1 = (10, 20, 30, 40) print(set(tuple1)) # {10, 20, 30, 40}

总结

在Python编程领域中,字典、集合与数据序列(主要包括列表与元组)虽然各自承担着不同的数据组织使命,却共享着一套精心设计的公共方法体系,这深刻体现了Python语言追求一致性与简洁性的设计哲学。这些公共方法如同一条无形的纽带,将三者紧密联系,显著降低了学习与使用的认知负担。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 0:42:50

downkyi无水印下载技术深度解析:从原理到实战

downkyi无水印下载技术深度解析&#xff1a;从原理到实战 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。…

作者头像 李华
网站建设 2026/4/16 9:47:31

ViGEmBus虚拟控制器驱动:如何让任何手柄在PC游戏中完美运行

ViGEmBus虚拟控制器驱动&#xff1a;如何让任何手柄在PC游戏中完美运行 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 想要让任天堂Switch Pro手柄、PS4手柄或其他第三方游戏控制器在PC上畅玩所有游戏吗&#xff1f;ViGEmBus虚拟游…

作者头像 李华
网站建设 2026/4/9 21:54:40

仅限内部流出:Open-AutoGLM量子自适应模块的5个隐藏功能首次公开

第一章&#xff1a;Open-AutoGLM量子通信适配增强在新一代AI框架与量子通信融合的背景下&#xff0c;Open-AutoGLM通过底层协议重构实现了对量子信道的安全适配与动态增强。该机制不仅提升了模型推理过程中的抗干扰能力&#xff0c;还确保了跨域数据传输的完整性与低延迟特性。…

作者头像 李华
网站建设 2026/4/16 10:25:38

XUnity.AutoTranslator快速上手:Unity游戏自动翻译完整指南

XUnity.AutoTranslator快速上手&#xff1a;Unity游戏自动翻译完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是专为Unity游戏设计的智能翻译解决方案&#xff0c;能够自动…

作者头像 李华
网站建设 2026/4/11 5:40:09

XUnity.AutoTranslator终极指南:一键实现Unity游戏多语言翻译

XUnity.AutoTranslator终极指南&#xff1a;一键实现Unity游戏多语言翻译 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的语言障碍而苦恼吗&#xff1f;XUnity.AutoTranslator作为一款专…

作者头像 李华
网站建设 2026/4/15 14:43:14

msyql 异常,别干着急,70%的问题都在这里!

性能测试中&#xff0c;数据库的性能问题&#xff0c;可能会占到 70%&#xff0c;所以讲性能测试&#xff0c;数据库是一个非常非常重要的知识。但是&#xff0c;最近在讲 MySQL 数据库的时候&#xff0c;却遇到了一个尴尬。 我们上课&#xff0c;是需要所有学员动手安装 MyS…

作者头像 李华