码迷,mamicode.com
首页 > 其他好文 > 详细

day3:set

时间:2016-02-01 01:40:18      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

set 不允许重复元素出现

技术分享add
>>> 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)
demo

#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])

 

day3:set

标签:

原文地址:http://www.cnblogs.com/dribs/p/5174049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!