set集合

小练习

下列两个字典,使用set得出需要修改(交集)、需要删除(差集)、需要添加的内容。

old_dict = {
    "#1":{'hostname':'c1', 'cpu': 2, 'dimm':2048},
    "#2":{'hostname':'c2', 'cpu': 2, 'dimm':2048},
    "#3":{'hostname':'c3', 'cpu': 2, 'dimm':2048},
}

new_dict = {
    "#1":{'hostname':'c1', 'cpu': 2, 'dimm':4096},
    "#3":{'hostname':'c3', 'cpu': 2, 'dimm':2048},
    "#4":{'hostname':'c4', 'cpu': 2, 'dimm':2048},
}

#只对keys作比较,得到所有keys的列表,并转为set集合
old_list = set(old_dict.keys())
new_list = set(new_dict.keys())

#需要更新的内容(交集)
update_set  = old_list .intersection(new_list)

#需要删除的内容(差集)
delete_set = old_list.difference(update_set)

#需要添加的内容
add_set = new_list.difference(update_set)

print(update_set)
print(delete_set)
print(add_set)

运行结果:

{'#1', '#3'}
{'#2'}
{'#4'}

图解:

set中difference和symmetric_difference的区别

例:

s1 = set([11,22,33])
s2 = set([33,44])
ret1 = s1.difference(s2)
ret2 = s1.symmetric_difference(s2)
print(ret1)
print(ret2)

运行结果:

{11, 22}
{11, 44, 22}

说明:

ret1中只循环s1
ret2中先循环s1,然后循环s2
原文地址:https://www.cnblogs.com/jacky-zhao/p/8125731.html