零基础 | 入门python04:献丑了,Python之字典和集合我终于弄清楚了

前言

上一章已经介绍了Python中的列表和元组,了解了他们的基本操作和性能比较。了解两个同样很常见并且很有用的数据结构字典和集合。(文章较为详细,文末有视频版

字典和集合的基础

字典和集合在Python被广泛使用,并且性能进行了高度优化,其重要性不言而喻。那究竟什么是字典,什么是集合呢?
相比于列表和元组,字典的性能更优,特别是对于查找、添加和删除操作,字典都能在常数、时间、复杂度内完成。而集合和字典基本相同,唯一的区别就是集合没有键和值的配对,是一系列无序的、唯一的键的组合。

什么是字典:

Python内置的数据结构之一,与列表一样是一个可变序列
以键值对的方式存储数据,字典是一个无序的序列
1、在存储数据时要经过hash(key)的计算,计算的结果就是存储的位置,因此字典的键值对顺序并不是按照存储时的先后顺序决定的,而是经过计算得到的存储位置。
2、字典中的键必须时不可变序列,否则当键改变时,hash计算的结果就会发生变化,导致存储位置发生变化。因此键必须要使用不可变序列

什么是集合:

1、python语言提供的内置数据结构
2、与列表和字典一样,都属于可变序列,同时与字典一样 无序的可变序列
3、集合是没有value的字典
4、集合类型与其他类型最大的区别在于,它不包含重复元素
5、集合中的元素是不可变的,但是整个集合是可变的
6、集合并不支持索引操作,因为集合本质上是一个哈希表,和列表不一样

字典和集合的创建方式

字典的创建方式

在这里插入图片描述
字典的实现原理
与查新华字典类似,差字典是先根据部首或者拼音查找相应的页码,Python中的字典是根据 key去查找value的所在位置

字典种的键是唯一的,创建字典时若出现“键”相同的情况,则后定义的“键-值”对将覆盖先定义的“键-值”对。
在这里插入图片描述
fromkeys()方法创建字典:当所有的键对应同一个值的时候,可以使用fromkeys创建字典
dict.fromkeys(seq[,value]):
1、seq:为字典“键”的值列表
2、value:为设置键序列(seq)的值,省略时默认为None
在这里插入图片描述
字典访问可以直接索引键,如果不存在就会抛出异常。
也可以使用get函数来进行索引,如果键不存在,调用get函数可以返回一个默认值。

集合的创建方式

在这里插入图片描述
注意:在Python的集合中0代表Flase,1代表True
在这里插入图片描述

集合的判断操作

in 或者 not in : 判断元素是否在集合中
在这里插入图片描述

字典的访问

1、根据键访问值
字典中每个元素表示一种映射关系,将提供的“键‘作为下标可以访问对应的值
如果字典中不存在这个”键“,则会抛出异常
在这里插入图片描述2、使用get()方法访问值
在访问字典时,若不确定字典中是否由某个键,可通过get()方法进行获取。
若该键存在,则返回对应的值
若该键不存在,则返回默认值
语法格式
dict.get([key[,default = None])
key:要查找的键
default:默认值,默认为None,可自行设置需要输出的默认值。如果指定的键不存在,则返回默认值,当default为空时,返回None
在这里插入图片描述

in 和 not in 在字典中的使用

判断键是否在字典中
在这里插入图片描述

修改和添加字典中的元素

当以指定键为下标为字典元素赋值时,有两种含义:
若该键存在字典中,则表示修改该键对应的值
若该键不存在字典中,则表示添加一个新的键值对,也就是添加一个新元素到字典中
在这里插入图片描述

删除字典中的元素 del命令 clear()方法 pop()方法 popitem()方法

del命令:

根据”键“删除字典中的元素
在这里插入图片描述

clear()方法:

用于清除字典中所有元素,其语法格式如下:
在这里插入图片描述

pop()方法:

用于获取指定”键“的值,并将这个键值对从字典中移除,并返回该键的值。
dict.pop(key[,default])
key:要被删除的键
default:默认值,当字典中没有要被删除的key时,该方法返回指定的默认值
在这里插入图片描述

popitem()方法:

用于随机获取一个键值对,将其删除,并以元组的方式返回被删除的键值对
dict.popitem():该方法无参数
在这里插入图片描述

集合添加元素 add()方法 update()方法

set_1.add(x)方法:如果数据项x不在结合set_1中,将x添加到set_1中 (一次添加一个元素,元素不重复的前提下)

set_1.update(T)方法:合并结合T中的元素到当前集合set_1中,并自动去除重复元素 (至少添加一个元素,元素不重复的前提下)
在这里插入图片描述

集合删除元素 remove()方法 discard()方法 pop()方法 clear()方法

S.remove(x)方法:

如果x在集合S中,移除该元素;如果x不存在则抛出异常

S.discard(x)方法:

如果x在集合S中,移除该元素;如果x不存在不会报错
在这里插入图片描述

S.pop()方法:

随机删除并返回集合中过的一个元素,如果集合为空则抛出异常

S.clear()方法:

清空集合
在这里插入图片描述

更新字典

使用update()方法:可以将新字典的键值对,一次性全部添加到当前字典中
如果两个字典存在相同的键,则以新字典中的值为准,更新当前字典
dict.updata(dict2)
dict:当前字典
dict2:新字典
在这里插入图片描述

获取字典视图的三个方法

key()方法

在这里插入图片描述

values()方法

在这里插入图片描述

items()方法

在这里插入图片描述

遍历字典

使用for循环遍历,列表、元组和集合的组合时
  ·当变量x为一个时,x会直接获取列表(元组)的值

·当变量x,y···的个数刚好与列表(元组)的个数相同时,则直接将值依次赋给变量

注意:只有在使用列表和元组和集合的两两组合时才能这样使用。
在这里插入图片描述
在这里插入图片描述

标题遍历字典中所有的键值对

使用items()方法,该方法以列表的形式返回可遍历的键值对元组
在这里插入图片描述

遍历字典中所有的键

当不需要字典中的值时,可使用keys()方法,只遍历字典中的键,该方法以列表返回一个字典中所有的键

在这里插入图片描述

遍历字典中所有的值

当只关心字典所包含的值时,可以使用values()方法,该方法以列表形式返回字典中所有的值
在这里插入图片描述

字典的特点

1、字典中所有的元素都是一个键值对(key - value),key不允许重复,但是value可以重复
2、字典中的元素是无序的
3、字典中的key是不可变对象(不可变序列)
4、字典页可以根据需要动态伸缩
5、字典会浪费较大的内存,是一种使用空间换时间的数据

复制字典

1、直接赋值:对象的引用
2、浅复制(copy()方法):拷贝父对象,引用对象内部的子对象
3、深复制(deepcopy()方法):copy模块的deepcopy()方法,完全复制父对象及其子对象
在这里插入图片描述

集合间的关系

两个集合是否相等 == 、 != 、 is 、not is
在这里插入图片描述
一个集合是否是另一个集合的子集
可以调用方法 issubset() 判断
B是A的子集

在这里插入图片描述
一个集合是否是另一个集合的超集
可以调用方法 issuperset() 判断
A是B的子集
在这里插入图片描述
两个集合是否没有交集  
可以调用方法 isdisjoint() 判断  
在这里插入图片描述

集合的数据关系

pass

总结

我们一起学习了字典和集合的基本操作,并对它们的高性能和内部存储。结构进行了讲解,字典和集合其内部的哈希表存储结构保证了其查找、插入、删除操作的高效性,

所以字典和集合通常运用在对元素的高效查找、去重等场景。

推荐一些Python学习资料

附上Python学习指南

在这里插入图片描述

👉Python学习路线汇总👈

围绕Python所有方向的技术点做的整理,以形成各个领域的知识点汇总,这样就可以按照上面的知识点去找对应的学习资源,保证学得较为全面。

👉Python必备开发工具👈

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉实战案例👈

边学边练是最高效的学习方法,这时候可以搞点实战案例来学习。

👉100道Python练习题👈

检查学习结果。

👉面试刷题👈


👉资料领取👈

这份完整版的Python全套学习资料已为大家备好,朋友们如果需要可以微信扫描下方二维码添加“住隔壁的王叔”,输入"领取资料" 可免费领取全套资料【有什么需要协作的还可以随时联系我】朋友圈也会不定时的更新最前言python知识。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值