ホームページ  >  記事  >  バックエンド開発  >  setはPythonではあまり使われないのでしょうか?

setはPythonではあまり使われないのでしょうか?

anonymity
anonymityオリジナル
2019-06-12 16:39:412362ブラウズ

Set は dict に似ており、これもキーのコレクションですが、値は保存されません。キーを繰り返すことができないため、セット内に繰り返されるキーはありません。set() 関数は、順序のない非繰り返し要素のセットを作成します。これを使用して、関係をテストし、重複データを削除し、共通部分と差分を計算します。 、など。

setはPythonではあまり使われないのでしょうか?set 構文:

class set([iterable])

パラメータの説明: iterable -- 反復可能なオブジェクト オブジェクト;

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)   #需要添加的集合

以上がsetはPythonではあまり使われないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。