PHP前端开发

python中set不常用吗

百变鹏仔 1个月前 (01-23) #Python
文章标签 常用

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

set 语法:

class set([iterable])

参数说明:iterable -- 可迭代对象对象;

立即学习“Python免费学习笔记(深入)”;

set集合,是一个无序且不重复的元素集合#set是一个无序且不重复的元素集合

s1=set()s1.add("alex")s1.add("eric")print(s1)#访问速度快#天生解决了重复问题ll=[1,2,3,4,5,6,3,2,1]s2=set(ll)print("转换后的集合为:",s2)#去除相同项,生成一个新的集合,删除s3=s2.difference([1,2,3,11])print("s2不变:",s2)print("观察是否生成一个新的集合s3:",s3)s4=s2.difference_update([3,4,5,11])  #删除所有包含在新集合中的元素,并生成一个新的集合print("是否改变原集合s2:",s2)print("是否生成新集合s4:",s4)ret=s2.pop()   #取出元素,并赋值给retprint("移除s2中的一个元素",s2)print("测试pop是否有返回值,移除的元素是:",ret)ret1=s2.remove(2)  #必须带参数且没有返回值print("移除s2中的一个元素:",s2)print("测试remove是否有返回值:",ret1)#练习# 数据库中原有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':"c2", 'cpu_count': 2, 'mem_capicity': 800 },    "#3":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 80 },    "#4":{ 'hostname':"c2", 'cpu_count': 2, 'mem_capicity': 80 }}"""分析:1、新有,原来无→新加入2、新有,原来有→更新3、新无,原来有→原来删除使用set的交集和差集来计算old_dict.keys()new_dict.keys()交集(更新):要更新的数据差集(删除):old_dict.keys()--交集差集(添加):new_dict.keys()--交集"""old=set(old_dict.keys())new=set(new_dict.keys())up_set=old.intersection(new)   #需要更新的集合del_set=old.symmetric_difference(up_set)   #需要删除的集合add_set=new.symmetric_difference(up_set)   #需要添加的集合