python容器类型——集合
一、定义
集合是一个无序的,不重复的数据组合
集合是一个只含有key的字典
集合通过花括号中,而各个元素用逗号分割
myset = {'key1','key2'} print(myset,type(myset)) #{'key2', 'key1'} <class 'set'>
集合元素必须是可hash对象,跟字典一样
set和dict的唯一区别仅在于没有存储对应的value
二、集合的作用
- 去重:把一个列表变成集合,就自动去重了,天生去重
#集合的去重
mylist = [1,2,3,3,2,3,4,4,45,5]
myset = set(mylist)
print(mylist)
print(myset)
#[1, 2, 3, 3, 2, 3, 4, 4, 45, 5]
#{1, 2, 3, 4, 5, 45}
- 关系测试:测试两组数据之前的交集、差集、并集等关系
三、集合的基本操作
1、增加
- 用法: s.add(item) => 添加一项
myset = {1, 2, 3, 4, 5, 45}
myset.add('key3')
print(myset)
#{1, 2, 3, 4, 5, 'key3', 45}
- 用法:s.update(someitems) => 添加多项
myset = {1, 2, 3, 4, 5, 45}
myset.update('abc')
print(myset)
#{1, 2, 3, 4, 5, 'a', 'c', 45, 'b'}
2、删除
- 用法1: s.remove(item) => 移除一项(item不存在会出错KeyError)
# #使用remove进行删除的时候,当key不存在的时候会报错
myset = {1, 2, 3, 4, 5, 45, 'a', 'c', 'b'}
myset.remove('c')
# myset.remove('c')
print(myset)
#{1, 2, 3, 4, 5, 'a', 45, 'b'}
- 用法2:s.discard(item) => 移除一项(item不存在则什么也不做)
#使用discard进行删除的时候,当key不存在的时候不会会报错
myset.discard('c')
print(myset)
#{1, 2, 3, 4, 5, 'a', 45, 'b'}
3、集合操作
a、创建集合
#创建一个数值集合
s = set([3,5,7,9])
#创建一个唯一字符的集合
t = set("hello")
print(s)
print(t)
#{9, 3, 5, 7}
#{'h', 'o', 'e', 'l'}
b、并集
- 并集:t 和 n的并集 ,返回一个新的 set 包含 n 和 t 中的每一个元素
n = set("hello")
t = set("python")
#并集
print(t.union(n))
print(t|n)
#{'y', 'l', 't', 'h', 'n', 'p', 'o', 'e'}
#{'y', 'l', 't', 'h', 'n', 'p', 'o', 'e'}
c、交集
- 交集: t 和 n的交集 , 返回一个新的 set 包含 n 和 t 中的公共元素
n = set("hello")
t = set("python")
#交集
print(t.intersection(n))
print(t&n)
#{'h', 'o'}
#{'h', 'o'}
d、差集
- 差集: 返回一个新的 set 包含 t 中有但是 n 中没有的元素
- 即t-t和n的交集
n = set("hello")
t = set("python")
#差集
print(t.difference(n))
print(t-n)
#{'t', 'p', 'n', 'y'}
#{'t', 'p', 'n', 'y'}
- 对称差集: 返回一个新的 set 包含 n 和 t 中不重复的元素(在t或n中,但不会同时出现在二者中)
n = set("hello")
t = set("python")
#对称差集
print(t.symmetric_difference(n))
print(t^n)
#{'t', 'p', 'n', 'e', 'y', 'l'}
#{'t', 'p', 'n', 'e', 'y', 'l'}
、