2021-02-05 DAY07--数据类型__集合

本文介绍了Python中的两种数据类型——集合和字典。集合是一个无序、可变且不允许重复的容器,常用于处理不重复数据,如爬虫去重。字典则是一个键值对的容器,提供了添加、删除元素以及交集、并集、差集等操作。集合的查找速度较快,元素必须可哈希,如Int、bool、str和tuple。此外,还讨论了集合与字典的转换及操作技巧。
摘要由CSDN通过智能技术生成

day07 数据类型(下)

  • set 集合,一个不允许重复的 && 可变的类型

  • dict 字典,一个容器切元素必须的键值对

  • float ,生错中常见的小数

1、集合 (set)

集合是一个无序、可变、不允许数据重复的容器

1.1 定义
1.1.1 无序
v1 = {11,22,33,'alex'}  ## 无序,就是无法通过索引取值
1.1.2 可变

可以添加和删除元素

v1 = {11,22,33,'alex'}
v1.add(55)
print(v1) 

## {11,55,22,33,'alex'}
1.1.3 不允许数据重复
v1 = {11,22,33,'alex'}
v1.add(33)
print(v1) 

## {11,22,33,'alex'}

使用场景

需要维护一大堆不重复的数据时,可以使用它,比如爬虫找突破链接…

** 注意事项

v = set()  ## 必须使用set() 来定义空集合
v = {}   ## 这种方式是不可以用的,创建的不是集合,而是字典
1.2 独有功能
1.2.1 添加元素
data = {'万嘉','刘德华','八大金刚'}
data.add('郑伊健')
1.2.2 删除元素
data = {'万嘉','刘德华','八大金刚'}
data.discard ('万嘉')
1.2.3 交集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马','刘德华'}

s3 = data_1 & data_2  ## {'刘德华'}
s4 = s1.intersection(s2)
 ## 以上2个方式都是取交集,
1.2.4 并集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马'}

s3 = data_1 | data_2
s4 = s1.union(s2)
 ## 以上2个方式都是取并集,

1.2.5 差集

data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马'}

s3 = data_1 - data_2 		    data_1中有且data_2中没有的值
s4 = data_1.difference(data_2)   data_1中有且data_2中没有的值

s5 = data_2 - data_1             data_2 中有且data_1中没有的值
s6 = data_2.difference(data_1)   data_2 中有且data_1中没有的值

 ## 以上2个方式都是取差集,data1 和data2 的位置不同,结果也会不同
1.3 公共功能
1.3.1 减法
同 差集
1.3.2 &, 计算交集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马','刘德华'}

s3 = data_1 & data_2  ## {'刘德华'}
s4 = s1.intersection(s2)
 ## 以上2个方式都是取交集,
1.3.3 | ,计算并集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马'}

s3 = data_1 | data_2
s4 = s1.union(s2)
 ## 以上2个方式都是取并集,
1.3.4 长度
data_1 = {'万嘉','刘德华','八大金刚'}
data = len(data_1)
print(data)  ## 结果为3
1.3.5 for 循环
data_1 = {'万嘉', '刘德华', '八大金刚'}
for item in data_1:
    print(item)
1.4 转换

其他类型如果要转为换集合的类型,可以通过set进行转换,并且如果数据有重复会自动删除

同样集合也可以转换为列表/元组 list/tuple/set

data_1 = 'feifei'
V2 = set(data_1)
print(v2) # {'f','e','i','f','e','i'}
1.5 其他
1.5.1 集合的存储的原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JXFPdeg-1612500429390)(D:\ASSETS\3A152B05-B356-48C7-BB30-937293F9F24B.png)]

1.5.2 元素必须可哈希

存储的原理,结合的元素必须可哈希,既:内部通过哈希函数把值转换成数字

目前可哈希的类型是,Int,bool,str,tuple

目前不可哈希的类型是,list,set

1.5.3 查找速度特别快

因为存储原理特殊,所以结合的查找效率特别高

1.5.4 对比与嵌套

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EcYfZctO-1612500429391)(D:\ASSETS\A99420FA-0354-419C-AD8A-14B06D4617CE.png)]

  • 注意: 由于True False 本质上存储的是0和1 ,所以整数0,1、False True同时出现在集合中会有如下情况
v1 = {True,1}
print(v1)  ## {True}

v2 = {1,True}
print(v2)  ## {1}

v3 = {0,False}
print(v3)  # {0}

v4 = {False, 0}
print(v4)  # {False}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值