python 散列类型

python 散列类型,第1张

python 散列类型
  • List item

文章目录
  • 前言
  • 一、初识集合(set)
  • 二、集合的方法
  • 三、初识字典(dict)
  • 四、声明空变量
  • 五、字典的方法
  • 总结


前言
  • 之前学过的数据类型可以分为:

1.数值类型: int float bool–> 存储一个数值
2.序列类型: str list tuple --> 存储多个数据

  • 今天学习第三种 --> 散列类型:

1.可以存放多个数据
2.内部是无序的(没有下标)
3.内部的数据是不重复!!!

一、初识集合(set)

集合(set) --> 赋值存储[不重复]数据,并且是[无序存储]的容器.主要用来去重和逻辑判断
表现形式:
用大括号{}包裹起来的数据,里面的数据用逗号,隔开
语法:

集合名 = {数据1,数据2,数据3}
set1 = {1,2,3,4,5,1,3,70,4,35}
print(set1) # 正常输出一个集合,里面的重复元素都被去掉了,自动去重
print(set1[2]) #会报错,散列类型是无序的,用下标取值会报错
print(type(set1)) # 查看变量set1的数据类型

进行逻辑判断,集合的运算:
集合1 & 集合2 --> 判断交集
集合1 | 集合2 --> 判断并集
集合1 - 集合2 --> 判断差集
& --> shift + 7
| --> shift + (回车上面那个键)
- --> 减号
交集: 一个数据,两个集合里都有
并集: 两个集合里的所有数据(不算重复的)
差集: 一个集合-另一个集合,减去共有的,剩下的就是差集(集合a独有的.去掉交集后的就是差集)
生活例子: 现在在吃饭,我们有两个碗
碗A{烧肉,青菜,小龙虾}
碗B{青菜,豆腐,白切鸡}
交集: 两个碗里都有的菜 --> 青菜
并集: 碗里的菜,种类加在一起就是并集 --> 烧肉 青菜 小龙虾 豆腐 白切鸡
差集: 碗之间相减,剩下独有的菜:
碗A - 碗B --> 烧肉 小龙虾
碗B - 碗A --> 豆腐 白切鸡

set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2) # 交集3
print(set1 | set2) # 12345
print(set1 - set2) # 差集1,2

你有两个文件夹.里面有很多数据,也有很多重复同名的数据 --> 通过交集判断
文件夹1 & 文件夹2 --> 找出两个文件夹都有的问题.就可以删一个了
集合里面不可以放列表!!!
集合的本质:
1.存储非重复数据 --> 去重
2.进行逻辑判断,集合运算,交并差,父子超
小练习: 列表去重

li = [1,2,3,4,1,1,3,5,70,70,4,1,1]
li = list(set(li)) # 把一个列表先转为集合去重. 然后再转回列表
print(type(li))
print(li)
二、集合的方法

set1 = {1,2,3}

  1. 增:

    add:添加一个数据
    集合名.add(数据)
    set1.add(70)

  2. 删:

    pop:删除一个元素(版本不同删除机制不一样,有的是随机删,有的是从最后开始删,有的是从头开始)
    集合名.pop()
    set1.pop()

    remove:删除指定的数据
    集合名.remove(数据)
    set1.remove(70)

  3. 改:
    update: 把一些序列类型的数据,打散添加到集合里
    集合名.update(序列类型)
    set1.update(“穿够衣服”)
    可以update添加列表,字符串,元组.所以序列类型.把序列类型的数据拆分再加到集合里

三、初识字典(dict)

字典(dict)是用来保存一些有典型"对应关系"的数据类型,它是用键值对的方式来存储数据
新华字典用法: 找到一个字,并找到它的描述
帅: 形容一个长得好看
富: 形容一个人经济条件好
属性名:描述
属性:描述 --> 键值对
键:值 --> 键相当于名字 值相当于描述/解释
key:value
“姓名”:“小八” --> 右边的数据是对左边数据的描述.
字典的表现形式为:

#用大括号包裹起来的数据,数据为键值对的方式保存,数据之间用逗号隔开,主要存储一些"有说明解释性质"的数据
	kylin = {
		"name":"七零",
		"age":18,
		height:177.5
	}

键值对 键:值 “年龄”:18
字典名 = {键1:值1, 键2:值2}
对比列表,元组的优势:更清晰
li = [“ql”,18,177,True] # 不加注释,过阵子可能就看不懂了
输出方式:

	print(字典名[键]) # 通过键,获取值
	print(字典名) # 输出整个字典
print(kylin["name"]) # 七零
print(kylin) # 输出整个字典

修改方式:
字典名[键名] = 值 # 修改这个键的值
kylin[“age”] = 26
字典的特性:
1.通过键值对的方式来存值,取值.而不是下标索引
2.字典里面的数据是可以改变的,并且可以嵌套(字典里面还可以字典,作为值)
3.键名是唯一的
字典的好处就是比起别的类型,它存储的数据看起来会更清晰.
本质:
用一个更好的方式存储一些特定的数据,数据之间存储解释说明关系,键值对
“姓名”:“小八” # 可读性比较好,两者是一个对应关系

四、声明空变量
li1 = [] # 声明一个空列表
tu1 = () # 声明一个空元组
str1 = '' # 声明一个空字符串
dict1 = {} # 声明一个空字典# 因为字典用的比集合多
set1 = set() # 声明一个空集合
五、字典的方法
  1. 增:
    setdefault: 给字典添加一个数据,如果这个数据已存在,就输出
    [1.新增一个键,值为空]
    字典名.setdefault(键名)
    kylin.setdefault(‘性别’)
    [2.新增一个键值对]
    字典名.setdefault(键名,值)
    kylin.setdefault(“存款”,520.66)
    [3.增加一个键,但那个键已存在,转为输出]
    字典名.setdefault(键名)
    print(kylin.setdefault(‘性别’))

  2. 删:
    pop: 通过键名删除指定的数据
    字典名.pop(键名)
    kylin.pop(‘height’)
    popitem: 删除键值对(删除方式也是根据版本不同)
    字典名.popitem()
    kylin.popitem()
    clear: 清空字典
    字典名.clear()
    kylin.clear()

  3. 改:

    update: 修改键的值,如果没有这个键,就新增一个
    [正常修改键的值]
    字典名.update({键:值})
    kylin.update({“name”:“麒麟”})
    [修改一个值,没找到那就新增一个]
    字典名.update({键:值})
    kylin.update({“体重”:“110斤”})
    [新增多个键值对]
    字典名.update({键:值,键:值})
    kylin.update({“偶像”:“周杰伦”,“家乡”:“内蒙古”})

  4. 查:

    get: 通过键名,获取键值
    字典名.get(键名)
    kylin.get(‘工作’) #如果没有这个键,会返回一个None,而不是报错
    keys: 获取所有的键
    字典名.keys()
    kylin.keys()
    values: 获取所有的值
    字典名.values()
    kylin.values()
    items: 获取所有键值对
    字典名.items()
    kylin.items()


总结

散列类型: 1.数据不重复 2.数据无序(没有下标)
set --> 集合
set1 = {1,1,2,3,1,4,5,70}
主要用来: 1.去重 2.进行逻辑判断:交并差

dict --> 字典
kylin = {
	"姓名":"七零",
	"性别":"男"
}

主要用来: 用键值对的方式来存储数据,数据理解起来会更清晰.字典是用键值对的方式来保存数据
键:值 键值对中间用:冒号分割,主要存储一些带有对照说明关系的数据

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5680350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存