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)])
总结
以上内容就是今天对于散列类型以及对应方法的介绍,希望能够让大家学习到新的知识