Python之基本數據類型set常用基本方法簡述


set和dict類似,也是一組key的集合,但不存儲value。由於key不能重復,所以,在set中,沒有重復的key

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()   #取出元素,並賦值給ret
print("移除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)   #需要添加的集合

比較元素-->difference()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#set1中有而set2中沒有的值
ret = set1.difference(set2)
print(ret)

刪除兩集合中相同的元素-->difference_update()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#從set1中刪除和set2中相同的元素
set1.difference_update(set2)
print(set1)
print(set2)

移除元素-->discard(values)

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#移除指定元素,不存在不會報錯,remove()不存在會報錯,建議discard
set1.discard(44)
print(set1)

取交集值-->intersection()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#取兩個set集合的交集值
ret = set1.intersection(set2)
print(ret)

取交集並更新-->intersection_update()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#取交集並更新到set1中
set1.intersection_update(set2)
print(set1)

對稱交集-->symmetric_difference()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#對稱交集,取兩個集合中互不存在的元素,生成一個新的集合
ret = set1.symmetric_difference(set2)
print(ret)

對稱交集並更新-->symmetric_difference_update()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#對稱交集,並更新元素到set1中
set1.symmetric_difference_update(set2)
print(set1)

並集-->union()

set1 = {1,44,87,23,55}
set2 = {1,44,88,23,67}
#並集並更新到新的集合中
ret = set1.union(set2)
print(ret)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM