Python set集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python set集合相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env python3
#set 是一个无序且不重复的元素集合
#访问速度快
#天生解决重复问题
‘‘‘
#在对象中增加一个元素
#传值是列表或字符串
s1 = set() #新建一个空的对象
s1.add(‘andy‘) #在对象中增加一个元素
print(s1)
s1.add(‘andy‘)
print(s1)
‘‘‘
#set中集合的合并
#difference
#difference_update
‘‘‘
#difference 传值是列表
比较两个或多个set集合,并生成一个新的集合
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘andy‘])
print(s2)
s3 = s2.difference([‘andy‘,‘rain‘]) #比较两个或多个set集合,并生成一个新的集合
print(s3)
#difference_update 传值是列表
#删除当前set中所包涵的参数集合里的元素
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘andy‘])
print(s2)
s2.difference_update([‘andy‘,‘rain‘])
print(s2)
‘‘‘
#set中删除集合中的元素
#pop
#remove
#discard
‘‘‘
#pop 拿走set集合中的第一个元素、并赋值给新的对象
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
print(s2)
result = s2.pop()
print(result)
print(s2)
#remove 传值是字符串
#删除集合中的某个元素、必须指定要删除的元素
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
s2.remove(‘andy‘)
print(s2)
#discard 传值是字符串
#移除元素
s2 = set([‘andy‘,‘rain‘,‘baby‘])
s2.discard(‘andy‘)
print(s2)
‘‘‘
#set中交集详解(交集其实就是重复)
#intersection
#intersection_update
‘‘‘
#intersection 传值是列表
#取两个集合中重复的元素、并赋值给新的对象
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
s3 = s2.intersection([‘rain‘,‘baby‘,‘coco‘])
print(s2)
print(s3)
#intersection_update 传值是列表
# 取两个集合中重复的元素、并将重复的元素更新为原来的集合,如果没有重复的内容,则原有集合置为空,如果传入的值为空,则原来的集合不变
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
s2.intersection_update([‘andy‘])
print(s2)
‘‘‘
#set中差集详解(差集其实就是不重复)
#symmetric_difference
#symmetric_difference_update
‘‘‘
#symmetric_difference 传值是列表
#取出两个集合中没有重复的字符串、并赋值给新的对象
s1 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
s2 = set([‘rain‘,‘coco‘])
s3 = s1.symmetric_difference(s2)
print(s3)
#symmetric_difference_update 传值是列表
#取出两个集合中没有重复的字符串、并更新原有集合
s1 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
s2 = set([‘rain‘,‘coco‘])
s1.symmetric_difference_update(s2)
print(s1)
‘‘‘
‘‘‘
#isdisjoint 传值是列表
#判断传入的值是否在集合中、如果有则返回False、如果没有则返回True
s2 = set([‘andy‘,‘rain‘,‘baby‘,‘coco‘])
s3 = s2.isdisjoint([‘andy‘]) #有则返回False
s4 = s2.isdisjoint([‘hello‘]) #没有则返回True
print(s3)
print(s4)
‘‘‘
#数据库中原有
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 }
}
#方法一:使用set集合
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)
print(update_set)
print(add_set)
print(delete_set)
#方法二:使用for循环及if判断
old_set = set(old_dict.keys())
update_list = list(old_set.intersection(new_dict.keys()))
new_list = []
del_list = []
for i in new_dict.keys():
if i not in update_list:
new_list.append(i)
for i in old_dict.keys():
if i not in update_list:
del_list.append(i)
print(update_list,new_list,del_list)
以上是关于Python set集合的主要内容,如果未能解决你的问题,请参考以下文章
python-列表list- 元组(tuple)- 集合(set)-字典(dict)-实例代码
Python集合(set)的操作方法汇总(约20种操作方法),并附示例代码
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段