Python从入门到精通——2. 2 元组和字典的创建及相关操作

Dunm1e Lv3

列表与元组的比较

列表适合存储在程序中且在运行期间会进行变化的数据集,因为列表是可以变化的。但是元组不同,元组被赋值后就确定了,在后面的运行过程中是无法被更改的。所以列表和元组是有不同的应用场景的,列表一般应用于比如游戏内容或者网站用户等场景。而元组一般应用于一个游戏或者网站固定属性和内容的场景。

元组

元组的定义

元组是使用圆括号(小括号)来进行引用标识(其实这个说法有问题,具体原因后面会分析)。其他的方式和列表大差不差,括号中添加元素后,利用逗号隔开,一个元组内部也可以有多种类型的数据。(ps:这里的符号也是英文半角下的符号,中文符号无法编译会报错)

元组的创建

创建一个空元组:

1
tup = ()

image.png

注意:若创建的元组只含有一个元素时,需要在元素后面加上逗号,,否则会认为你创建的不是元组,而只是一个int类型的整数,括号则被当成一个运算符使用。
所以更加严格的说法,元组是由逗号标识的,圆括号只是让元组更整洁清晰,并且有一个更明显的特征罢了。

image.png

元组和列表类似,也是通过索引访问元素,并且索引也是从0开始。可以进行截取组合操作
image.png

图片来源:菜鸟教程

image.png

元组的相关操作

元组的修改

元组内单独的元素是无法被修改的,当你想要修改元素时,是一个非法操作,Python会对此报错处理
image.png

但是我们可以给元组的变量再次赋值,然后覆盖之前的元组。
image.png

并且我们可以对元组进行组合,得到一个新的元组
image.png

元组的删除

元组中的元素值也是不允许被删除的,但是我们可以使用del语句来删除整个元组,让元组从程序变量中被删除。
删除后的元组若进行打印或者其他操作,将会报错
image.png

元组的运算

可以通过运算符对元组进行相应的运算操作,这里的运算不是指加减乘除这些运算,而是一些针对于元组的操作。如:计算元素个数,元组的连接(得到新元组或者自加成为一个新元组),复制,判断元素是否存在,以及遍历迭代。具体如下:
image.png

元组的内置函数

序号 方法及描述
1 len(tuple) 计算元组元素个数。
2 max(tuple) 返回元组中元素最大值。
3 min(tuple) 返回元组中元素最小值。
4 tuple(iterable) 将可迭代系列转换为元组。
这里介绍一下第四个tuple(iterable),这里的可迭代系列一般包括list、str、tuple,你可以简单理解为能够一次返回一个成员的对象,也就是可以 for…in 遍历的。比如你遍历一个列表,它可以每次给你返回一个元素,这就是可迭代。

关于元组不可变的解释

所谓的元组不可变指的是元组所指向的内存中的内容不可变,也就是当你的程序运行了,那么在这个程序中,你的元组在内存的内容就固定了,你没办法去改变内存中元组的值。
这里利用菜鸟教程的例子:
image.png

可以看到,当你直接修改元组内部某个或某些元素的值是会报错的,但是当你把元组变量进行重新赋值,是可以的,并且重新赋值后,相当于变量绑定了新的对象,而不是修改了原来的对象,这里就把原来的对象覆盖了,所以也就得到了新的内存地址。

字典

字典的定义

字典是另一种可变容器模型,也可以存储任意类型的对象和数据。
每个元素或者对象都是一个键值对,也就是一个键一个值key:value,每个键值对之间用逗号,分割,整个字典包在花括号{}

1
d = {key1 : value1, key2 : value2, key3 : value3 }

ps:同样,dict作为是Python的关键字内置函数,是不建议将变量名命名为dict的。
值得注意:一个字典中,键值对是不能重复的,键必须是唯一的,但是值可以不唯一。比如字典中是每个人的爱好,名字不能相同,但是爱好可以相同。

字典的创建

创建空字典:直接用一个大括号{}表示。

1
emptyDict = {}

image.png

字典的访问

在字典中,我们已经知道了存储的是一系列键值对,所以每一个键都对应着一个值,这样我们就可以通过使用键来访问与之关联的值。与键相关连的可以是数、字符串、列表甚至又是一个字典(又是嵌套,Python最恶心的东西)。
下面我们先看一个例子:
image.png

get函数

对于访问一个键值对,这里我们讲解一个方法:get()
这个方法针对于你想要访问一个键,但是你不知道字典中是否存在这个键的情况。
语法:get(key,text)

  • key:你想访问的键
  • text:如果不存在这个键,你想要返回输出的值(不是必要参数,默认为None
    image.png

字典的相关操作

添加键值对

因为字典是一个动态结构,并且键值对都是唯一的,所以我们可以随时添加不重复的键值对,并且可以直接通过引用要加的键然后将其赋值,就可以成功添加。(如果对重复的键赋值就变成了更新键值对,可以参考下面字典的修改
image.png
ps:一般添加的键值对都在字典末尾

字典的修改

字典的修改十分简单,直接对字典的某个键进行引用并且对其赋值,就会覆盖之前的值,从而更新
image.png

删除键值对

对于键值对的删除,可以删除一个元素,也可以清空整个字典
这里我们都使用del语句(ps:这里被删除的元素是永远消失了,就是在之后的程序运行中就没有了,之后你无法再次对这个键进行任何操作,如果你引用这个键将会报错中断程序)
image.png

字典的嵌套

字典的嵌套是分为三类的,第一类是多个字典组合成一个列表,第二类是字典中的键值对的值是一个列表,第三类是字典中键值对的值是一个字典

字典=>列表

就是可以创建多个字典,然后每个字典作为一个元素组合成一个列表
image.png

列表作为值

这个不过多解释,就是可以把一个列表当成一个键值对的值。再次强调,列表不能作为键值对的键
image.png

字典作为值

字典套字典套字典套字典……,能一直套娃,和上面类似
image.png

字典的特性

  1. 不允许一个键出现两次。如果创建字典时一个键被赋值两次,那么后一个值会覆盖前一个值
    image.png
  2. 键必须是一个不可变的对象类型,比如数字、字符串或者元组。但是列表就不行,因为列表是一个动态的对象
    image.png

字典的内置函数

序号 函数及描述
1 dict.clear() 删除字典内所有元素
2 dict.copy() 返回一个字典的浅复制
3 dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 dict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
5 key in dict 如果键在字典dict里返回true,否则返回false
6 dict.items() 以列表返回一个视图对象
7 dict.keys() 返回一个视图对象
8 dict.setdefault(key, default=None) 和**get()**类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 dict.update(dict2) 把字典dict2的键/值对更新到dict里
10 dict.values() 返回一个视图对象
11 [pop(key,default]) 删除字典 key(键)所对应的值,返回被删除的值。
12 popitem() 返回并删除字典中的最后一对键和值。
13 str() 输出字典,可以打印的字符串表示。其实就是把字典整体作为字符串输出

参考:菜鸟教程

这里演示部分函数:
image.png

  • Title: Python从入门到精通——2. 2 元组和字典的创建及相关操作
  • Author: Dunm1e
  • Created at : 2024-09-27 18:56:47
  • Updated at : 2024-09-28 12:51:11
  • Link: https://dunm1e.github.io/2024/09/27/7185ada32ee0/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments