python(三)set集合

set集合的特点是无序、不重复序列

创建集合:


1

2

3

4

5

6

7

8

9

10

11

12

13

a.s1 = {11,22}

b.s2 = set()

c.s3 = set([11,22,33,44])

s = set()   #创建空集合

li = [11,22,11,22]

s2 = set(li)

print(s2)

{11, 22}

se = {"123","456"}

li = [ ]

list((11,22,33,44))

原理:当执行list()时,内部会调用list __init__,内部执行for循环(11,22,33,44) [11,22,33,44]

#只要类()这样的形式,就会去调用__init__的方法。

操作集合:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

s = set()

s.add(123)   #添加元素

s.add(123)

s.add(123)

print(s)

s.clear()    #清空内容

s.copy()     #浅拷贝

s1 = {11,22,33}

s2 = {22,33,44}

s3 = s1.difference(s2)   #a中存在,b中不存在的 s1中存在,s2中不存在

s4 = s2.difference(s1)   #s2中存在,s1中不存在

# s3 = s1.symmetric_difference(s2)   #a中存在b中不存在,b中存在a中不存在的拿出来。

# print(s3)

# s1.difference_update(s2)            #把a(s1)中存在,b(s2)中不存在的值更新到a中。如果以后还会用到s1,就不要用此方法,如果确定以后不会再用

# s1了就可以直接用这个方法。这样的好处是减少变量的声明。

# print(s1)

# s1.discard(11)       #移除指定元素,如果元素不存在则不报错

# s1.remove(1111)      #移除指定元素,如果元素不存在则报错

# s1.pop()             #随机移除一个s1中的元素,因为集合是无序的,所以移除元素是不确定的。移除的

# 时候会返回移除的元素的值。

# pop方法演示:

s1 = {11,22,33}

ret = s1.pop()

print(ret)

33

# s1 = {11,22,33}

# s2 = {22,33,44}

# s3 = s1.intersection(s2)   #取s1和s2的交集,就是两个集合都有的元素

# print(s3)

# {33, 22}

# s1.intersection_update(s2)  #同样与difference_update类似,把两个集合的交集元素更新到s1中

# print(s1)

# s3 = s1.union(s2)     #把两个集合合起来,去并集。如s1和s2,结果就是11,22,33,44

# print(s3)

# {33, 22, 11, 44}

s1 = {11,22,33}

s1.update([55,66,777])            #接收一个可迭代的对象,内部会自己去循环这个对象,然后把元素

# 更新到集合中。相当于批量添加

print(s1)

{33, 66, 777, 11, 22, 55}

s1.update("abcdefg")              #字符串也是可迭代的,会把每个字符分开,更新到集合中

print(s1)

set练习题:

假设脚本自动采集资产。当前情况是:1槽:8G 2槽:4G 4槽2G,如果你做了一个操作,将4槽的内存放到了3槽,1槽的内存换成了4G。资产更新了,应该把最新的数据更新到字典中。


1

2

3

4

5

6

7

8

9

10

11

old_dict = {

    "#1": 8,

    "#2": 4,

    "#4": 2,

}

new_dict = {

    "#1": 4,

    "#2": 4,

    "#3": 2,

}

现在应该把#3的数据更新到old_dic字典中,把#4的数据删除,然后更新#1的值。

首先要找出:

应该删除哪几个槽位

应该更新哪几个槽位

应该增加那几个槽位


1

2

3

del_set = set(old_dict).difference(set(new_dict))      #取出需要删除的槽位{‘#4‘}

add_set = set(new_dict).difference(set(old_dict))      #取出需要添加的槽位{‘#3‘}

update_set = set(new_dict).intersection(set(old_dict)) #取出需要更新的槽位{‘#2‘, ‘#1‘}

时间: 2024-10-06 01:20:27

python(三)set集合的相关文章

Python基础之集合

Python基础三:一.数据类型排序: 可变与不可变: 1.可变:列表,字典 2.不可变:字符串,元组,数字 访问顺序: 1.直接访问:数字 2.顺序访问:字符串,列表,元组 3.映射:字典 存放元素个数: 1.容器类型:列表,元组,字典 2.原子类型:数字,字符串 二.集合 特点: 1.不同元素组成 2.是无序的 3.集合中的元素必须是不可变类型(数字,字符串,元组) 4.定义集合的方式:test = {'xyy','xyyp',1,2,3,4}或test = set('xyy') 三.集合功

Python中set集合使用方法

set是一个无序且不重复的元素集合,它有可变集合(set())和不可变集合(frozenset)两种,可以对set()集合进行创建.添加.删除.交集.并集和差集的操作,非常实用,以下是具体用法: 一.创建集合set python set类是在python的sets模块中,新的python版本可以直接创建集合,不需要导入sets模块. 具体用法: 1. set('old') 2. set('o','l','d') 二.集合添加 python 集合的添加有两种常用方法,分别是add和update,具

Python - 三大器 迭代器,生层器,装饰器

目录 Python - 三大器 迭代器,生层器,装饰器 一. 容器 二. 可迭代对象(iterable) 三. 迭代器 四. 生成器 五. 装饰器 1. 定义 六. 闭包 Python - 三大器 迭代器,生层器,装饰器 在介绍三大器之前先来了解一下容器和可迭代对象... 一. 容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存

Python的set集合详解

Python 还包含了一个数据类型 —— set (集合).集合是一个无序不重复元素的集.基本功能包括关系测试和消除重复元素.集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算. 创建集合set 大括号或 set() 函数可以用来创建集合. set集合类需要的参数必须是迭代器类型的,如:序列.字典等,然后转换成无序不重复的元素集.由于集合是不重复的,所以可以对字符串.列表.元组进行去重

Python中set集合的整理

set集合函数主要用来去除重复: 比如一个列表有多个重复值,可以用set搞掉 >>> l = [1,2,3,4,5,4,3,21] >>> >>> l [1, 2, 3, 4, 5, 4, 3, 21] >>> >>> >>> set(l) set([1, 2, 3, 4, 5, 21]) >>> set  可以做交集,并集,差集 set的增删改 增:>>> a

Welcome to Swift (苹果官方Swift文档初译与注解二十一)---140~147页(第三章--集合类型)

第三章 Collection Types (集合类型) 在Swift中,提供了两种集合类型用来存储一组值:数组和字典.数组有序的存储相同类型的值;字典存储无序的相同类型的值.字典可以通过唯一的标识(就是所说的键)来查询和访问. 在Swift中,数组和字典总是要清晰的标明他们存储数据的类型.这就意味着不可以将错误的类型插入到数组或字典中.同时也意味着你是明确了解你要遍历的数组或字典里面数据的类 型.在Swift中,集合要显式的声明类型来保证在开发中都会明确的知道它能处理的数据类型. 注意点: 在S

Python字典和集合

1. 字典字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的.可哈希表示key必须是不可变类型,如:数字.字符串.只含不可变类型元素的元组(1,2,3,'abc').实现__hash__()方法的自定义对象(因为__hash__()须返回一个整数,否则会出现异常:TypeError: an integer is required).可以用ha

Welcome to Swift (苹果官方Swift文档初译与注解二十三)---154~162页(第三章--集合类型)

Dictionaries (字典) 字典像是一个容器,它可以存放很多相同类型的值.每个值都有与之关联的唯一的键,键在字典里的作用,就像是每个值的身份证标识一样.与数组中的元素不同,字典里的每个元素没有 固定的循序.当你使用字典并且要查询一个值的时候,需要使用值的标识(key)才行.这就像是你在生活里使用一本字典来查找某个单词的定义一样. 在Swift中,字典能够存储的类型需要明确定义.这与OC中的NSDictionary 类和NSMutableDictionary 类很不同,OC中它们可以使用任

复习java基础第三天(集合)

一.Collection常用的方法: Java 集合可分为 Set.List 和 Map 三种体系: Set:无序.不可重复的集合. List:有序,可重复的集合. Map:具有映射关系的集合. Collection 接口是 List.Set 和 Queue 接口的父接口, 该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合: import java.util.ArrayList; import java.util.Collection; import j