标签:
set 不允许重复元素出现
>>> s2 = set() >>> s2.add(‘dirbs‘) >>> print s2 set([‘dirbs‘]) >>> s2.add(‘dirbs‘) >>> print s2 set([‘dirbs‘]) >>> >>> s3 = set([‘alex‘,‘eric‘,‘tony‘,‘alex‘]) >>> >>> print s3 set([‘tony‘, ‘alex‘, ‘eric‘])
difference 返回不同的元素(处理完生成一个新的集合)
>>> s4 = s3.difference(["alex",‘eric‘])
>>> s4
set([‘tony‘])
>>> s3
set([‘tony‘, ‘alex‘, ‘eric‘])
difference_update 传什么移除什么,删除当前set中的所有包含在参数集合里的元素的(不生成新的集合,修改原来集合)
>>> s3
set([‘tony‘, ‘alex‘, ‘eric‘])
>>> s4 = s3.difference_update(["alex",‘eric‘])
>>> s4
>>> s3
set([‘tony‘])
discard 移除元素
intersection 取交集,新创建一个set
interserction_update 取交集,修改原来的set
isdisjoint 如果没有交集,返回tru e
issubset 是否是子集
issuperset 是否是父集
pop 移除,并且在获取这个值(接收返回值付给变量)
>>> s3 = set([‘alex‘,‘eric‘,‘tony‘,‘alex‘])
>>> s3
set([‘tony‘, ‘alex‘, ‘eric‘])
>>> s3.pop()
‘tony‘
>>> s3
set([‘alex‘, ‘eric‘])
remove 和pop的区别,只拿走不获取,无返回值
>>> s3
set([‘alex‘, ‘eric‘])
>>> s3.remove()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: remove() takes exactly one argument (0 given)
>>> s3.remove(‘alex‘)
>>> s3
set([‘eric‘])
symmetric_difference 差集,创建新对象
symmetric_difference_update 差集,改变原来
union 并集
update 更新
练习
# 数据库中原有 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 } } 需要删除:? 需要新建:? 需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
根据大王课上讲的所写 old = set(old_dict.keys()) new = set(new_dict.keys()) update_set = old.intersection(new) delete_set = old.symmetric_difference(update_set) add_set = new.symmetric_difference(update_set)
#difference 和 summetric_difference(多进行了一次以S2的循环) 的区别
>>> s1 = set([11,22,33])
>>> s2 = set([22,44])
>>> ret1 = s1.difference(s2)
>>> ret2 = s1.symmetric_difference(s2)
>>> print ret1
set([33, 11])
>>> print ret2
set([33, 11, 44])
标签:
原文地址:http://www.cnblogs.com/dribs/p/5174049.html