>  기사  >  백엔드 개발  >  Python에서는 set이 일반적으로 사용되지 않습니까?

Python에서는 set이 일반적으로 사용되지 않습니까?

anonymity
anonymity원래의
2019-06-12 16:39:412421검색

Set은 dict와 유사하며 키 모음이지만 값을 저장하지 않습니다. 키는 반복될 수 없으므로 세트에 반복되는 키가 없습니다. set() 함수는 관계를 테스트하고, 중복 데이터를 삭제하고, 교집합, 차이, 합집합을 계산하는 데 사용할 수 있는 순서가 지정되지 않은 비반복 요소 집합을 만듭니다. 등. .

Python에서는 set이 일반적으로 사용되지 않습니까?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)   #需要添加的集合

위 내용은 Python에서는 set이 일반적으로 사용되지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.