2024-9-30 学习人工智能的Day6

        今天我们学习的是字典(dict)、集合(set)两个新的数据容器。

1.Python字典(dict)

        字典是一种可变容器模型,且可以存储任何类型对象,字典的每个键值( key:value)用冒号分隔,每个对之间用逗号分割,整个字典包括花括号{ }中

1.创建字典

        因为dict作为Python中的关键字和内置函数,所以变量名应避免dict。需要注意的规则是在字典中键是必须是唯一的,但值则不是。值可以是任何数据类型,但键是不可变的,如字符串,数字,元组等不可变的字段作为键名。

        字典的创建封可以直接通过在{ }中用键值对的表达形式key : value来给予它特征值,也可以使用它的内置dict()函数来创建字典。但是所有的元素都必须存在键。

d1 = {}#创建空字典
d2 = dict()#使用内建函数 dict()创建字典
d3 = {"name":"karen","age":23}
d4 = dict({"name":"jack","age":24})

print(d3)# 打印字典
print(len(d3))# 查看字典的数量
print(type(d3))# 查看类型

在创建字典的过程中,可能会出现键名一致的情况,而这种情况下程序并不会出错,只是会在程序运行中将后声明的值赋给这一个键。

2.访问字典里的值

        和之前学过的数据容器一致,字典也是既能存也能取,而字典的取值方式与数列类似,但是数列的查询是通过查询其下标实现的,数据名后[ ]中填写的也是对应的数字,而字典因为没有直接的排序,所有字典的查询方式是通过键来访问,而通过键访问的也是键内所储存的值。

需要注意的是在查询键值的时候,键名是什么形式的就应该用什么形式输写,而不是键名为数字,但查询时将键名用双引号框选,这样查询到的只会是这个字符串的键值,而如果当这个值不存在的时候,程序就会报错,这直接说明了字典无法查询不存在的键。

3.修改字典

        因为字典中各个键所对应的值是可变量,那么我们就可以修改字典,而字典也可以通过新增键值对和删除、清空键值对等进行修改。

较为特殊的是,如果对一个存在的键进行更新时,字典会直接将该对键值加入字典中。

 说完了更新和删除后,就该说说删除了,这次的字典依旧是提供了del和clear()两个函数,非常容易理解,如果del 后的表达式有指定键值,则只删除该键值,如果只有一个字典名则是直接删除整个字典,而clear()就直接清空指定字典内的所有键值,但保留该字典空间。就不过多演示。

5.字典常用API

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

popitem()返回并删除字典中的最后一对键和值。

先是dict.fromkeys(seq),此方法可以快速创建字典,并统一赋值。从下图亦可以看出,统一赋值的参数value是能够为所有类型的。

接下来是.items()、.keys()和.values(),这两个的返回值都是一个列表,但是items是将键和值都输出为列表中的元素,而keys和values分别输出的是键名和键值。 需要注意的是,items()输出的是元组,而keys()和values()输出的则是列表。

 其他的例如get()就是通过键名访问值,但是它比直接访问有优势的地方是当访问到不存在的键时,程序并不会报错,所以可以通过get来增加程序的通过性。

然后是字典的连接符,在列表中我们提供了直接使用+号进行连接的方式,非常快捷和方便的,但是在字典中,我们无法使用,只能够通过提供的update()函数进行更新。因为是更新,所以是直接对原字典进行修改,不输出新字典。

然后提供的两个删除函数,一个是pop(key)指定删除键所对应的值,但是会返回被删除的值,另一个popitem()则是删除字典中的最后一对键和值。

最后在提一下in这个函数,在之前的元组中也提供了这个函数,主要是用于判断某键是否在字典内。不在过多实践。

二.Python集合(set)

        集合是一个无序的不重复元素序列,但是可以在进行交集、并集、差集等常见的集合操作。

1.创建集合

        集合的表现方式也是{ }表示,其中的所有元素都用逗号隔开,与字典的形式不同。那么就需要考虑一个问题,当时我使用(set = {} )语句创建内存空间时,这个set的类型是什么,是集合呢还是上面讲到的字典呢? 显然,类型为字典,所以该语句创建的是字典,而不是集合。

集合的正确创建方式依然是两种,一种是直接使用大括号创建,一种是用set()函数创建。 

还需要注意的是,当我们直接有大括号创建集合且集合中的值只有一个时,应该在该变量的后面加上一个逗号来表明此为集合元素。回到第一个话题,创建空集合的话也就应该使用set()这种方式来创建了。 

2.添加元素

        集合的常见添加方法有.add()和.update()两种,前者是进行简单的添加,而后置用于多数据的添加,且参数可以元组、列表、字典等,只需用逗号将各个元素隔开即可。

从该结果可以看出集合的特性:无序。

但是在添加时需要注意嵌套和一些其他的案例

3. 移除元素

        集合中注意的三种方式分别为.remove()、.discard()、.pop()等三个函数。remove和discard的差异主要是移除后如果元素不存在是否会发生错误的问题。而pop则是对排序后的集合的左面第一个元素进行删除。

这里需要注意的是pop()的输出虽然是删除了10,但是数列是一定经过了重新排序的。

4.其他API

方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()返回集合的交集。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

        之前有过的方法就不一一重复介绍了,集合中最主要的方法是各种子集的生成。

然后是返回两个集合中不重复的元素集合。

最后是各种判断集合的关系的方法。 

今天的学习,到此结束。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值