python基础之散列类型

python基础之散列类型

Hello大家好,我是python学习者小杨同学,时间很快啊,转眼又是一周过去了,这次又给大家带来新的内容。

截止至上一周我们聊完了各个序列类型以及它们的方法,这周我们来了了散列类型。

相比序列类型是有序可以索引的,无序且不可索引的就称之为散列。

散列又有集合和字典两种类型,它们又有自己相对应的特性和方法,现在我们就开始一起来学习吧。

集合

集合是一个数学概念,即“确定的一堆东西”,集合里的“东西”称为元素,这里不深入展开。

集合的三大特性

集合具有互异性(唯一)、无序性(无法索引)、确定性(元素必须为不可变类型(元组/字符串))三个概念

定义方式

集合使用花括号{}做为定界符,定义集合时最少要有一个元素

set1 = {1}
print(set1)
{1}

集合的运算

集合的运算有三种方式,分别是交集、并集、与差集

交集

交集用于计算两个集合中同样存在的元素,使用与号符&做为运算符

a = {1, 2, 3, 4, 5}
b = {2, 3, 4}
print(a & b)
{2, 3, 4}

说人话就是找出一样的,去掉不一样的

集合a的元素有1,2,3,4,5集合b有2,3,4故两个集合的交集是2,3,4

并集

并集用于将两个集合去重后合并起来,使用竖杆|做为运算符

a = {1, 2, 3, 4, 5}
b = {2, 3, 4}
print(a | b)
{1, 2, 3, 4, 5}

集合a为1,2,3,4,5集合b为2,3,4并集去重后合并为1, 2, 3, 4, 5

差集

用于计算两个集合中的差异元素,使用减号-做为运算符

a = {1, 2, 3, 4, 5}
b = {2,3,4}
print(a - b)
{1, 5}

就类似于减法运算,把集合a当作被减数,把集合b当作减数,最后得出的差是1,5

集合的增删改查方法

讲完了集合的三大运算后,来讲讲几个的增删改查方法

将指定元素追加到集合中,使用的方法是add方法

a = {1, 2, 3, 4, 5}
a.add("1234")
print(a)
{1, 2, 3, 4, 5, '1234'}

删除有两个方法,分别是pop()和remove()

pop()
# 这是一个pop方法 pop 删除并返回任意元素,因为测试中删除了第一个元素,故可以当作删除并返回第一个元素
a = {1, 2, 3, 4, 5}
print(a.pop())
1
remove()
# remove 删除指定元素,必须是集合的成员
a = {1, 2, 3, 4, 5}
a.remove(1)
print(a)
{2, 3, 4, 5}

改使用update()方法,update(可迭代对象)把元素拆分后添加进集合中

a = {1, 2, 3, 4, 5}
b = {2, 3, 4}
a.update([6, 7, 8, 9])
print(a)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

集合中查询的方法有三种,分别是isdisjoint、issubset、issuperset

isdisjoint

isdisjoint是用来查询两个集合是否存在交集的方法,有存在则返回False

a = {1, 2}
b = {2, 3, 4}
print(a.isdisjoint(b))
False
issubset

issubset用来查询一个集合是否是另一个集合的子集,若不是返回False

a = {1, 2, 3, 4, 5}
b = {2, 3, 4}
print(a.issubset(b))
False
issuperset

issuperset用来查询一个集合是否是另一个集合的父级,若不是返回False

a = {1, 2, 3, 4, 5}
b = {2, 3, 4}
print(a.issuperset(b))
True

字典

定义方式

字典也是以花括号{}为定界符,与集合不同的是,字典可以直接空的{}来定义

a = {}
print(type(a))
<class 'dict'>

字典中的元素是采用键(key)值(value)对(:)的格式,其中key唯一,不允许重复

a = {'username': 'xiaoyang'}
print(a)
{'username': 'xiaoyang'}

上述代码中定义了一个字典,key为username,value为xiaoyang

字典的增删改查方法

字典的也有属于自己的增删改查的方法,下面我们一起来看看

字典中的增加方法使用setdefault,setdefault用于指定一个键值,如果字典有则查询,字典没有则增加,键值中间使用逗号隔开

a = {'username': 'xiaoyang'}
a.setdefault('password', '123456')
print(a)
{'username': 'xiaoyang', 'password': '123456'}

上面通过setdefault方法添加了一个password的键值对,并把其添加到字典的末尾

删除有pop和popitem两种方法,各有个的用处

pop

pop 删除并返回指定键值对

与其他类型的pop不同的是,字典的pop需要指定键,否则会报错

a = {'username': 'xiaoyang', 'password': '123456'}
a.pop()
print(a)
Traceback (most recent call last):
  File "C:\Users\xiaoyang\Documents\python学习区\python学习\1.py", line 2, in <module>
    a.pop()
TypeError: pop expected at least 1 argument, got 0

当指定键以后删除该键值对

a = {'username': 'xiaoyang', 'password': '123456'}
a.pop('password')
print(a)
{'username': 'xiaoyang'}
popitem

popitem 以元组的形式返回最后一对键值对,并删除

a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
print(a.popitem())
('age', 18)

字典中改的方法是update,指定字典的键值对,有则改,无则增

有则改
a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
a.update({'age': 19})
print(a)
{'username': 'xiaoyang', 'password': '123456', 'age': 19}
无则增
a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
a.update({'sex': '男'})
print(a)
{'username': 'xiaoyang', 'password': '123456', 'age': 18, 'sex': '男'}

字典的查分别有get、keys、values、items

get

get方法用于查询指定key的value,如果该key不存在返回None

a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
b = a.get('username')
xiaoyang
keys

keys方法用于查询所有的key,返回一个数据类型dict_keys,内部数据使用列表包裹

a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
b = a.keys()
print(b)
dict_keys(['username', 'password', 'age'])
values

values方法用于查询所有的value,返回一个数据类型dict_values,内部数据使用列表包裹

a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
b = a.values()
print(b)
dict_values(['xiaoyang', '123456', 18])
items

items方法查询字典中的所有元素,返回一个数据类型dict_items,内部数据使用元组包裹

a = {'username': 'xiaoyang', 'password': '123456', 'age': 18}
b = a.items()
print(b)
dict_items([('username', 'xiaoyang'), ('password', '123456'), ('age', 18)])

总结

以上内容就是今天对于散列类型以及对应方法的介绍,希望能够让大家学习到新的知识

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值