2020-12-08

本文详细介绍了Python中的字典和集合。字典是一种无序可变序列,通过键来存取数据,键必须唯一且不可变。集合也是无序的,用于存储唯一元素,可用于去重。创建、访问、修改和删除字典元素的方法以及集合的创建、添加、删除操作等关键知识点被逐一讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四次 字典与集合

其中,字典这种序列结构就像电话通讯录,可以将联系人姓名和电话号码关联起来,在需要时可以直接通过姓名找到对应的电话;而集合就像是收集了很多表情的表情包,里面的所有表情都是唯一的。

字典

字典(dictionary)和列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的内容是以“键-值对”的形式存放的。

字典的主要特征如下。

通过键而不是通过索引来读取字典有时也称为关联数组或者散列(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
字典是任意对象的无序集合
字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找顺序。
字典是可变的,并且可以任意嵌套
字典可以在原处增长或者缩短(无须生成一份拷贝),并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典)。
字典中的键必须唯一
不允许同一个键出现两次,如果出现两次,则后一个值会被记住。
字典中的键必须不可变
字典中的键是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。

字典的创建和删除

定义字典时,每个元素都包含两个部分——“键”和“值”,并且在“键”和“值”之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号“{}”中。语法格式如下:

    dictionary = {'key1':'value1', 'key2':'value2', ..., 'keyn':'valuen',}

dictionary:表示字典名称;
key1, key2, …, keyn:表示元素的键,必须是唯一的,并且不可变,例如可以是字符串、数字或者元组;
 value1, value2, …, valuen:表示元素的值,可以是任何数据类型,不是必须唯一。

同列表和元组一样,也可以创建空字典。在Python中,可以使用下面两种方法创建空字典。

  dictionary = {}'''或者'''
  dictionary = dict()


某大学的寝室里住着4位清秀可人的美女,她们的名字保存在一个列表中,另外,她们每个人的星座对应着保存在另一个列表中。
根据名字和星座创建一个字典。 (实例位置:资源包\TM\sl\06\01)

定义两个包括4个元素的列表,再应用dict()函数和zip()函数将前两个列表转换为对应的字典,并且输出该字典,代码如下:

在这里插入图片描述
在这里插入图片描述

通过给定的“键-值对”创建字典
 dictionary = dict(key1=value1,key2=value2,...,keyn=valuen)

dictionary:表示字典名称; key1, key2, …,
keyn:表示元素的键,必须是唯一的,并且不可变,例如可以是字符串、数字或者元组; value1, value2, …,
valuen:表示元素的值,可以是任何数据类型,不是必须唯一。

访问字典

在Python中,如果想将字典的内容输出也比较简单,可以直接使用print()函数。

print(dictionary)
在使用字典时,很少直接输出它的内容。一般需要根据指定的键得到相应的结果。

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

由于字典是可变序列,所以可以随时在其中添加“键-值对”,这和列表类似。向字典中添加元素的语法格式如下:

 dictionary[key] = value

参数说明如下: dictionary:表示字典名称; key:表示要添加元素的键,必须是唯一的,并且不可变,例如可以是字符串、数字或者元组;
value:表示元素的值,可以是任何数据类型,不是必须唯一。

当字典中的某个元素不需要时,可以使用del命令将其删除。
当删除一个不存在的键时,将抛出如下图所示的异常。
在这里插入图片描述

字典推导式

使用字典推导式可以快速生成一个字典
在这里插入图片描述
生成的字典为: {1: 21, 2: 85, 3: 11, 4: 65}

集合

Python中的集合(set)与数学中的集合概念类似,也是用于保存不重复的元素。它有可变集合(set)和不可变集合(frozenset)两种。其中,本节所要介绍的set集合是无序可变序列,而另一种在本书中不做介绍。在形式上,集合的所有元素都放在一对大括号“{}”中,两个相邻元素间使用逗号“,”分隔。集合最好的应用就是去重,因为集合中的每个元素都是唯一的。

在数学中,集合的定义是把一些能够确定的不同的对象看成一个整体,而这个整体就是由这些对象的全体构成的集合。集合通常用大括号“{}”或者大写的拉丁字母表示。
集合最常用的操作就是创建集合,以及集合的添加、删除、交集、并集和差集等运算,下面分别进行介绍。

创建集合

在Python中提供了两种创建集合的方法,一种是直接使用“{}”创建;另一种是通过set()函数将列表、元组等可迭代对象转换为集合。

直接使用“{}”创建
setname = {element 1,element 2,element 3,...,element n}

其中,setname表示集合的名称,可以是任何符合Python命名规则的标识符;element 1、element 2、element 3、element n表示集合中的元素,个数没有限制,并且只要是Python支持的数据类型就可以。
列子

01  set1 = {'水瓶座','射手座','双鱼座','双子座'}
02  set2 = {3,1,4,1,5,9,2,6}
03  set3 = {'Python', 28, ('人生苦短', '我用Python')}
{'水瓶座', '双子座', '双鱼座', '射手座'}
{1, 2, 3, 4, 5, 6, 9}
{'Python', ('人生苦短', '我用Python'), 28}
由于Python中的set集合是无序的,所以每次输出时元素的排列顺序可能与上面的不同,不必在意。
使用set()函数创建

在Python中,可以使用set()函数将列表、元组等其他可迭代对象转换为集合。set()函数的语法格式如下:

setname = set(iteration)

setname:表示集合名称;
iteration:表示要转换为集合的可迭代对象,可以是列表、元组、range对象等。另外,也可以是字符串,如果是字符串,返回的集合将是包含全部不重复字符的集合。

下面的每行代码都可以创建一个集合

01  set1 = set("命运给予我们的不是失望之酒,而是机会之杯。")
02  set2 = set([1.414,1.732,3.14159,2.236])
03  set3 = set(('人生苦短', '我用Python'))

{‘不’, ‘的’, ‘望’, ‘是’, ‘给’, ‘,’, ‘我’, ‘。’, ‘酒’, ‘会’, ‘杯’, ‘运’, ‘们’,
‘予’, ‘而’, ‘失’, ‘机’, ‘命’, ‘之’}
{1.414, 2.236, 3.14159, 1.732}
{‘人生苦短’, ‘我用Python’}
在创建空集合时,只能使用set()实现,而不能使用一对大括号“{}”实现,这是因为在Python中,直接使用一对大括号“{}”表示创建一个空字典。

向集合中添加和删除元素

向集合中添加元素

向集合中添加元素可以使用add()方法实现。它的语法格式如下:

    setname.add(element)

其中,setname表示要添加元素的集合;element表示要添加的元素内容。这里只能使用字符串、数字及布尔类型的True或者False等,不能使用列表、元组等可迭代对象。
列如 定义一个保存明日科技零基础学系列图片名字的集合,然后向该集合中添加一个刚刚上市的图书名字。

01  mr = set(['零基础学Java','零基础学Android','零基础学C语言','零基础学C#','零基础学PHP'])
02  mr.add('零基础学Python')  # 添加一个元素
03  print(mr)

{‘零基础学PHP’, ‘零基础学Android’, ‘零基础学C#’, ‘零基础学C语言’, ‘零基础学Python’,
‘零基础学Java’}

从集合中删除元素
在Python中,可以使用del命令删除整个集合,也可以使用集合的pop()方法或者remove()方法删除一个元素,或者使用集合对象的clear()方法清空集合,即删除集合中的全部元素,使其变为空集合。
在这里插入图片描述
在这里插入图片描述

小结

字典和列表有些类似,区别是字典中的元素是由“键-值对”组成的。然后介绍了Python中的集合,集合的主要作用就是去重。至此,我们已经学习了4种序列结构,读者在实际开发时,可以根据自己的实际需要选择使用合适的序列类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值