2.5.1 集合操作
Posted kakarott
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.5.1 集合操作相关的知识,希望对你有一定的参考价值。
本节内容
1,集合操作
2,练习题
一、 集合
- set类型
set数据类型:s ={11,22,33} - 特点:
1,元素无序且唯一。
2,可以存放各种数据类型。
3,天生去重。 - 主要作用:1,去重 2,关系测试
数据:
list_1 = {1, 3, 4, 5, 6, 7, 9}
list_1 = {2,6,0,66,22,8,4}
1,构建方法
# 基于列表
list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)
# 基于字符串
list_2 = set("hello")
print(list_1, list_2)
-----------------------------------
{1, 3, 4, 5, 6, 7, 9} {‘l‘, ‘o‘, ‘h‘, ‘e‘}
2,集合常用操作
s = set([3,5,9,10]) #创建一个数值集合
t = set("Hello") #创建一个唯一字符的集合
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t – s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
# 基本操作:
t.add(‘x‘) # 添加一项
s.update([10,37,42]) # 在s中添加多项
# 使用remove()可以删除一项,不存在则报错:
t.remove(‘H‘)
# len(s)
set 的长度
# 测试 x 是否是 s 的成员
x in s
# 测试 x 是否不是 s 的成员
x not in s
# (子集)测试是否 s 中的每一个元素都在 t 中 ,返回bool型
s.issubset(t)
s <= t
# (父集)测试是否 t 中的每一个元素都在 s 中,返回bool型
s.issuperset(t)
s >= t
# 判断是否有交集,如果没有则返回true
s.isdisjoint(t)
# (并集)返回一个新的 set 包含 s 和 t 中的每一个元素
s.union(t)
s | t
# (交集)返回一个新的 set 包含 s 和 t 中的公共元素
s.intersection(t)
s & t
# (差集)返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.difference(t)
s - t
# (对称差集)返回一个新的 set 包含 s 和 t 中不重复的元素
s.symmetric_difference(t)
s ^ t
# 返回 set “s”的一个浅复制。
s.copy()
# 删除集合中的一个元素,如果没有则什么也不做(比remove容错性好)。
s.discard(888)
二、 练习
练习:寻找差异
# 数据库中原有
old_dict = {
"#1":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 },
"#2":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }
"#3":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }
}
# cmdb 新汇报的数据
new_dict = {
"#1":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 800 },
"#3":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }
"#4":{ ‘hostname‘:c2, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }
}
1,需要删除主机:?
2,需要新建主机:?
3,需要更新主机:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
# 思路:先找两个结合的交集,
# 遍历新字典的key,如果不在更新的字典中则认为是要新增的。
# 遍历就字典的key,如果不在更新的字段中则认为是要删除的。
old_set = set(old_dict.keys())
update_list = list(old_set.intersection(new_dict.keys()))
new_list = []
del_list = []
for i in new_dict.keys():
if i not in update_list:
new_list.append(i)
for i in old_dict.keys():
if i not in update_list:
del_list.append(i)
print(update_list,new_list,del_list)
以上是关于2.5.1 集合操作的主要内容,如果未能解决你的问题,请参考以下文章