Python序列的应用(八):元组、字典

前言:在Python编程语言中,序列是一种非常重要的数据结构,它允许我们存储和操作有序的数据集合。在前几期的内容中,我们已经探讨了列表(List)和集合(Set)这两种序列的应用,它们各自具有独特的特性和用途。列表以其灵活性和可变性而闻名,而集合则以其无序性和唯一性而受到青睐。今天,我们将深入探讨Python中的另外两种序列类型:元组(Tuple)和字典(Dictionary)。

元组和字典都是Python中不可或缺的数据结构,它们在不同的场景下有着广泛的应用。元组以其不可变性和高效性而受到青睐,尤其适合用于保护数据不被修改的情况。字典则以其键值对的结构和快速查找能力而闻名,是存储和管理关联数据的理想选择。

在这篇文章中,我们将详细介绍元组和字典的创建、操作和应用,包括:

  1. 元组的创建和删除:如何创建元组,以及如何删除整个元组或其元素。
  2. 访问元组元素:如何通过索引访问元组中的元素。
  3. 修改元组元素:为什么元组是不可变的,以及如何处理需要修改元组的场景。
  4. 元组推导式:如何使用元组推导式来创建元组。
  5. 字典的创建和删除:如何创建字典,以及如何删除整个字典或其元素。
  6. 通过键值对访问字典:如何通过键来访问字典中的值。
  7. 遍历字典:如何遍历字典的键、值或键值对。
  8. 添加、修改和删除字典元素:如何对字典进行增删改操作。
  9. 字典推导式:如何使用字典推导式来创建字典。

通过这篇文章,你将能够更深入地理解元组和字典的工作原理,以及如何在实际编程中有效地使用它们。无论是处理固定不变的数据集,还是管理复杂的关联数据,元组和字典都能提供强大的支持。让我们开始今天的探索之旅吧!

一、元组

Python 中的元组(Tuple)是一种数据结构,用于存储不同的值(可以是数字、字符串、对象等)。元组与列表(List)类似,但元组是不可变的,这意味着一旦元组被创建,你就不能添加、删除或改变它的元素。元组的这种不可变性使得它们在某些情况下比列表更安全,因为它们不能被意外地修改。

以下是关于Python元组的一些基本特性和操作:

1、创建元组:

元组可以通过将一系列值用逗号分隔来创建,或者使用圆括号来明确表示这是一个元组。

# 使用逗号分隔
my_tuple = 1, 2, 3
print(my_tuple)  # 输出:(1, 2, 3)# 使用圆括号
my_tuple = (1, 2, 3)
print(my_tuple)  # 输出:(1, 2, 3)

2、元组的删除

由于元组是不可变的,你不能删除元组中的单个元素,但可以删除整个元组或者清空整个元组。

my_tuple = (1, 2, 3)
del my_tuple  # 删除整个元组
# my_tuple[0] = 4  # 尝试修改元素会抛出TypeError# 清空元组
my_tuple = ()
print(my_tuple)  # 输出:()

3、 访问元组元素:

可以通过索引来访问元组中的元素,索引从0开始。

my_tuple = (1, 2, 3)
print(my_tuple[0])  # 输出:1

4、元组的不可变性:

由于元组是不可变的,你不能修改元组中的元素。尝试修改将会导致错误。

my_tuple = (1, 2, 3)
# my_tuple[0] = 4  # 这会抛出TypeError

5、元组的切片:

可以对元组进行切片操作,但结果仍然是一个新的元组。

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:3])  # 输出:(2, 3)

6、元组的连接:

可以使用加号(+)来连接两个元组,但结果是一个新的元组。

tuple1 = (1, 2)
tuple2 = (3, 4)
print(tuple1 + tuple2)  # 输出:(1, 2, 3, 4)

7、元组的解包:

可以同时赋值多个变量,这称为元组的解包。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c)  # 输出:1 2 3

8、元组的方法:

元组有一些内置的方法,如 count()index()
在Python中,count()index() 是列表(List)和元组(Tuple)等序列类型提供的内置方法,它们用于执行特定的操作:

① count() 方法:

  • count() 方法用于统计某个元素在序列中出现的次数,并返回这个计数。
  • 它接受一个参数,即你想要计数的元素。
  • 如果元素在序列中不存在,则返回0。
  • 示例:
    my_list = [1, 2, 2, 3, 2, 4]
    count_of_two = my_list.count(2)  # 返回元素2出现的次数
    print(count_of_two)  # 输出:3
    

② index() 方法:

  • index() 方法用于从序列中找出某个元素第一次出现的索引位置,并返回这个索引。
  • 它接受一个参数,即你想要查找索引的元素。
  • 如果元素在序列中不存在,则抛出一个 ValueError 异常。
  • 可以有可选的参数,用于指定搜索的起始和结束位置。
  • 示例:
    my_list = [1, 2, 3, 2, 4]
    index_of_two = my_list.index(2)  # 返回元素2第一次出现的索引
    print(index_of_two)  # 输出:1
    
    如果列表中有多个相同的元素,index() 只会返回第一个元素的索引。

这两个方法在处理列表和元组时非常有用,尤其是在需要对元素进行计数或者查找元素位置时。

9、元组与列表的转换:

元组可以被转换成列表,反之亦然,因为列表是可变的。

my_tuple = (1, 2, 3)
my_list = list(my_tuple)  # 将元组转换为列表
print(my_list)  # 输出:[1, 2, 3]my_list = [1, 2, 3]
my_tuple = tuple(my_list)  # 将列表转换为元组
print(my_tuple)  # 输出:(1, 2, 3)

10、元组推导式

元组推导式类似于列表推导式,但是使用圆括号而不是方括号。

my_tuple = tuple(i * 2 for i in range(5))
print(my_tuple)  # 输出:(0, 2, 4, 6, 8)### 11、元组和列表的区别
1. **可变性**- 列表是可变的,可以添加、删除或更改元素。- 元组是不可变的,一旦创建就不能更改。2. **性能**- 由于元组的不可变性,它们通常比列表有更小的内存开销,并且在某些情况下执行速度更快。3. **用途**- 列表通常用于存储需要动态改变大小的数据集合。- 元组通常用于保护数据不被改变,并且可以作为字典的键,而列表则不能。4. **方法**- 列表有更多的方法,比如 `append()`, `extend()`, `remove()`, `pop()` 等,因为它们需要支持元素的添加和删除。- 元组的方法较少,主要是 `count()` 和 `index()`。5. **语法**- 创建列表时使用方括号 `[]`。- 创建元组时使用圆括号 `()`,或者逗号分隔。元组在Python中非常有用,特别是在需要确保数据不被改变的情况下,比如作为字典的键或者函数的返回值。### 实例训练20 -使用元组保存咖啡馆里提供的咖啡名称

coffeename = (‘蓝山’,‘卡布奇诺’,‘摩卡’,‘曼特宁’,‘麝香猫’,‘哥伦比亚’) #定义元组
print(coffeename) #输出元组

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214100727709-642900042.png)### 实例训练21 -使用for循环列出咖啡馆里提供的咖啡名称

coffeename = (‘蓝山’,‘卡布奇诺’,‘摩卡’,‘曼特宁’,‘麝香猫’,‘哥伦比亚’) #定义元组
print(“您好,欢迎光临 ~ 伊米咖啡馆 ~\n\n我店有: \n”)
for name in coffeename: #遍历元组
print(name + “咖啡”,end= " ")

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214102535595-1822594802.png)### 实例训练22 -分两列显示某赛季NBA西部联盟前八名球队

print(“某赛季NBA西部联盟前八名\n”)
team = (“火箭”,“勇士”,“开拓者”,“雷霆”,“爵士”,“鹈鹕”,“马刺”,“森林狼”)
for index,item in enumerate(team):
if index%2 == 0: #判断是否为偶数,为偶数时不换行
print(item +“\t\t”,end=‘’)
else:
print(item + “\n”) #换行输出

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214110120012-846870189.png)
### 实例训练23 -将麝香猫咖啡替换为拿铁咖啡

coffeename = (‘蓝山’,‘卡布奇诺’,‘摩卡’,‘曼特宁’,‘麝香猫’,‘哥伦比亚’) #定义元组
coffeename[4] = ‘拿铁’ #将"麝香猫",替换为"拿铁"
print(coffeename)

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214110602778-1644122603.png)
### 注意:通过这个实验就可以看出元组是无法直接修改的,需要修改得重新赋值,如:

coffeename = (‘蓝山’,‘卡布奇诺’,‘摩卡’,‘曼特宁’,‘麝香猫’,‘哥伦比亚’) #定义元组
coffeename = (‘蓝山’,‘卡布奇诺’,‘摩卡’,‘曼特宁’,‘拿铁’,‘哥伦比亚’) #定义元组
print(coffeename)


### 二、字典
Python中的字典(Dictionary)是一种内置的数据结构,它存储键值对(key-value pairs)。字典中的每个键都与一个值相关联,且键必须是唯一的。以下是关于Python字典的一些基本操作:### 1、字典的创建和删除### ① 创建字典:
- 字典可以通过花括号 `{}` 或者 `dict()` 函数来创建。
- 键值对用冒号 `:` 分隔,键值对之间用逗号分隔。```python
# 使用花括号创建
my_dict = {'name': 'Alice', 'age': 25}# 使用dict()函数创建
my_dict = dict(name='Alice', age=25)# 空字典
empty_dict = {}

② 删除字典:

  • 可以使用 del 语句或者 clear() 方法来删除整个字典。
  • 也可以使用 pop()popitem() 方法来删除字典中的单个元素。
# 删除整个字典
del my_dict# 清空字典
my_dict = {'a': 1, 'b': 2}
my_dict.clear()  # 清空字典后,my_dict 变为 {}# 删除单个键值对
my_dict = {'a': 1, 'b': 2}
my_dict.pop('a')  # 删除键 'a' 及其对应的值,返回值 1
my_dict.popitem()  # 删除并返回一个键值对,字典变为 {}

实例训练24 -创建一个保存女神星座的字典

name = ['绮梦','冷伊一','香凝','黛兰']         #作为键的列表
sign = ['水瓶座','射手座','双鱼座','双子座']    #作为值的列表
dictionary = dict(zip(name,sign))             #转换为字典
print(dictionary)                             #输出转换后字典

2、通过键值对访问字典

可以通过键来访问字典中的值。

my_dict = {'name': 'Alice', 'age': 25}
print(my_dict['name'])  # 输出:Alice

如果尝试访问不存在的键,会抛出 KeyError。为了避免这个错误,可以使用 get() 方法,它允许你设置一个默认值。

print(my_dict.get('name', 'Default Name'))  # 输出:Alice
print(my_dict.get('gender', 'Default Gender'))  # 输出:Default Gender

3、遍历字典

可以遍历字典的键、值或键值对。

my_dict = {'name': 'Alice', 'age': 25}# 遍历键
for key in my_dict:print(key)# 遍历值
for value in my_dict.values():print(value)# 遍历键值对
for key, value in my_dict.items():print(key, value)

4、添加、修改和删除字典元素

① 添加元素:

  • 直接赋值即可添加新的键值对。
dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
dictionary["碧绮"] = "巨蟹座"             #添加一个元素
print(dictionary)

② 修改元素:

  • 如果键已存在,赋值会更新其对应的值。
dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
dictionary["香凝"] = "天蝎座"             #添加一个元素,当元素存在时,则相当于修改功能
print(dictionary)

③ 删除元素:

  • 使用 del 语句、pop()popitem() 方法删除元素。
dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
del dictionary["香凝"]            #删除一个元素
print(dictionary)

当删除一个不存在的键时,会报错异常:

dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
del dictionary["香凝2"]            #删除一个元素
print(dictionary)


避免这个异常,可以做一下修改:

dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
if "香凝2" in dictionary:          #如果存在del dictionary["香凝2"]        #删除一个元素
print(dictionary)

5、字典推导式

字典推导式提供了一种优雅的方式来创建字典。

# 创建一个平方数字典
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典推导式可以包含条件语句:

# 创建一个只包含偶数的平方数字典
even_squares = {x: x**2 for x in range(6) if x % 2 == 0}
print(even_squares)  # 输出:{0: 0, 2: 4, 4: 16}

实例训练25 -应用字典推导式实现根据名字和星座创建一个字典

name = ['绮梦','冷伊一','香凝','黛兰']                        #作为键的列表
sign = ['水瓶','射手','双鱼','双子']                          #作为值的列表
dictionary = {i:j+'座' for i,j in zip(name,sign)}            #使用列表推导式生成字典
print(dictionary)                                            #输出转换后字典

以上就是Python字典的基本操作,包括创建、删除、访问、遍历、修改以及使用字典推导式。字典是Python中非常强大和灵活的数据结构,适用于各种场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 功能函数介绍

一, 二值化函数 功能: 用于对图像进行二值化处理 参数: cv2.threshold(输入你的图像所对应的灰度图, 阈值:是浮点还是整数取决予图像的数据类型 最大值;高于阈值的像素值, 阈值类型:cv2.THR…

【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)

发现了一个使用Selenium的find_element模块,快速获取文字和表格的方法,很实在,以后爬网的时候,就不用beautifulSoup 和 pandas的read_html 混起来用了! 文字部分:实现网络节点下,某个节点下的其…

【AI知识】有监督学习之回归任务(附线性回归代码及可视化)

1. 回归的基本概念 在机器学习的有监督学习中,回归(Regression)是一种常见的任务,它的目标是通过观察数据来建立一个模型,用一个或多个自变量来预测因变量的值。 回归分析通常用于: a.预测,基于…

边缘计算+人工智能:让设备更聪明的秘密

引言:日常生活中的“智能”设备 你是否发现,身边的设备正变得越来越“聪明”? 早上醒来时,智能音箱已经根据你的日程播放舒缓音乐;走进厨房,智能冰箱提醒你今天的食材库存;而在城市道路上&…

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程,其实就是一个 JVM 虚拟机。 而进程是…

ansible自动化运维(四)jinjia2模板

Jinjia2模板 前面说到playbook组成的时候,有介绍到template模块,而template模块对模板文件进行渲染时,使用的就是jinja2模板引擎,jinja2本身就是基于python的模板引擎,所以下面先来了解一下jinjia2模板的一些用法 基…

Windows安装Jira

下载 Download Jira Data Center | Atlassian https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-10.3.0-x64.exe 以管理员身份安装,否则弹出以下提醒 创建和配置MySQL数据库:参照 Connecting Jira applicat…

uniapp - 微信小程序

一、background-image 大图不显示的问题 解决方法: 1、使用网络地址;2、使用 base64 urlTobase64(filePath) {// #ifdef MP-WEIXINlet img ${filePath},imgBase64 wx.getFileSystemManager().readFileSync(img, "base64"),base64Url data:…

DETR: End-to-End Object Detection with Transformers论文学习

论文地址:https://arxiv.org/pdf/2005.12872 代码地址:https://github.com/facebookresearch/detr 相关学习视频:https://space.bilibili.com/94779326/lists?sid1531941 标题前言: DETR 是 Facebook 团队于 2020 年提出的基于…

Vue3状态管理:Pinia架构设计分析

Vue3状态管理:Pinia架构设计分析 介绍 在Vue.js开发中,状态管理是一个非常重要的部分。随着Vue3的发布,Pinia作为一种新的状态管理架构也相继问世。本文将对Pinia架构进行深入分析,帮助读者了解其设计原理、特点以及在实际项目中的应用。 架构…

【IDEA】启动报错

今天启动IDEA报错 报错信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打开任务管理器,关掉进程ID5444的任务

socket编程UDP-实现停等机制(接收确认、超时重传)

在下面博客中,我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程,并附上完整源码。 socket编程UDP-文件传输&模拟TCP建立连接脱离连接(进阶篇)_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制: sock…

python xpath解析笔记

与bs4的区别 bs4有很多属性和方法,而xpath只有一个方法,是通过不同的xpath表达式实现很多功能的。 html例子 定位 tree.xpath(‘/html/head/title’) 返回列表。 开头的斜杠表示从根节点遍历。 中间的斜杠表示层级。(相当于bs4中的>…

Q学习(Q-Learning)详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

树状数组详解

概述 树状数组(Binary Indexed Tree,简称BIT),是一种数据结构,用于处理区间查询和更新问题。它是一种可以高效地在对数级别时间复杂度内进行单点更新和区间查询的数据结构。树状数组通常用于解决以下两类问题&#xf…

freeswitch(开启支持MCU视频会议,使用mod_av模块)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install

【大数据技术基础】【记录Ubuntu 16.04升级到18.04】Ubuntu的一个版本升级到另一个版本

在 Ubuntu 操作系统中进行软件更新和系统升级 Ubuntu Kylin 16.04 LTS 系统进行系统升级到 Ubuntu 18.04.6 LTS 版本 升级提示:系统弹出提示框,告知用户有新版本的 Ubuntu 可用,询问用户是否想要升级。 认证窗口:显示了一个认证…

这是一个vue3 + scss的数字滚动效果

介绍: 当数字变化时&#xff0c;只改变变化的数字位&#xff0c;其余的不变&#xff0c;可以递增、递减、骤变、负数也可以&#xff0c;但是样式要根据具体的项目需求去改&#xff1b; 效果1、增加数字&#xff1a; 效果2、减少数字&#xff1a; 使用方法&#xff1a; <te…

TortoiseGit的下载、安装和配置

一、TortoiseGit的简介 tortoiseGit是一个开放的git版本控制系统的源客户端&#xff0c;支持Winxp/vista/win7.该软件功能和git一样 不同的是&#xff1a;git是命令行操作模式&#xff0c;tortoiseGit界面化操作模式&#xff0c;不用记git相关命令就可以直接操作&#xff0c;读…

最新版Chrome浏览器加载ActiveX控件之Adobe PDF阅读器控件

背景 Adobe PDF阅读器控件是一个ActiveX控件&#xff0c;用于在Windows平台上显示和操作PDF文件。它提供了一系列方法和属性&#xff0c;可以实现对PDF文件的加载、显示、搜索、打印、保存等操作。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件…