1.set 集合
1.set 方法解析
1.定义一个set
s1 = "caesary" set1 = set(s1) print(set1) l1 = [1,2,3,4] set2 = set(l1) print(set2) t1 = (1,1,1,2,3) set3 = set(t1) print(set3)
执行结果如下
{‘y‘, ‘e‘, ‘s‘, ‘r‘, ‘c‘, ‘a‘} {1, 2, 3, 4} {1, 2, 3}
总结:set集合有去重功能,类似awk数组;并且是无序的,类似字典。
2.add()
print(set1) set1.add("x") print(set1)
执行结果如下
{‘e‘, ‘a‘, ‘s‘, ‘c‘, ‘r‘, ‘y‘} {‘e‘, ‘a‘, ‘s‘, ‘c‘, ‘r‘, ‘x‘, ‘y‘}
总结:add()方法可以在集合中添加一个元素。
3.clear()
print(set1) set1.clear() print(set1)
执行结果如下
{‘s‘, ‘a‘, ‘r‘, ‘c‘, ‘e‘, ‘y‘} set()
总结:clear()方法可以清空一个集合。
4.copy()
print(set1) set4 = set1.copy() print(set1,set4)
执行结果如下
{‘s‘, ‘a‘, ‘y‘, ‘c‘, ‘r‘, ‘e‘} {‘s‘, ‘a‘, ‘y‘, ‘c‘, ‘r‘, ‘e‘} {‘c‘, ‘r‘, ‘e‘, ‘s‘, ‘a‘, ‘y‘}
总结:copy()可以浅拷贝一个集合。
5.difference()、difference_update()
print(set2,set3) set5 = set2.difference(set3) print(set5,set2) set3.difference_update(set2) print(set2,set3)
执行结果如下
{1, 2, 3, 4} {1, 2, 3, 5} {4} {1, 2, 3, 4} {1, 2, 3, 4} {5}
总结:difference()方法,是从本集合中删除和参数集合共同的元素并赋给一个集合,本集合和参数集合不变。difference_update()方法,是从本集合中删除和参数集合共同的元素,作用在本集合上。
6.discard()、remove()
共同点:
print(set3) set3.discard(2) print(set3) set3.remove(1) print(set3)
执行结果如下
{1, 2, 3, 5} {1, 3, 5} {3, 5}
不同点:
t1 = (1,1,1,2,3,5) set3 = set(t1) print(set3) set3.discard(6) print(set3) set.remove(6) print(set3)
执行结果如下
Traceback (most recent call last): File "/Users/liukai/PycharmProjects/s13/day3/blog.py", line 49, in <module> set.remove(6) TypeError: descriptor ‘remove‘ requires a ‘set‘ object but received a ‘int‘ {1, 2, 3, 5} {1, 2, 3, 5}
总结:discard()、remove()方法都是删除一个元素,不同的是,discard()是有则删除,无则pass,而remove()方法是有则删除,无则异常,强烈建议使用discard()
7.intersection()、intersection_update()
print(set2,set3) set7 = set2.intersection(set3) print(set7)
执行结果如下
{1, 2, 3, 4} {1, 2, 3, 5} {1, 2, 3}
总结:intersection()方法,返回一个本集合和参数集合的交集集合。
print(set2,set3) set2.intersection_update(set3) print(set2)
执行结果如下
{0, 1, 2, 3, 4} {1, 2, 3, 5} {1, 2, 3}
总结:intersection_update()方法,返回一个本集合和参数集合的交集集合,作用于本集合。
8.update()
print(set2) set2.update({0,0,0,9}) print(set2)
执行结果如下
{1, 2, 3} {0, 1, 2, 3, 9}
总结:update()方法直接更新一个集合到本集合并去重。
2.set应用举例分析
有两个字典,需要把新字典更新到老字典:
old_dict = { "#1":8, "#2":4, "#4":2, } new_dict = { "#1":4, "#2":4, "#3":2, }
解题思路:
1.需要求出老字典需要删除的条目。
2.需要求出新字典需要新增到老字典的条目。
3.需要求出新字典需要更新到老字典的条目。
解题方法:
###set(),把老字典的key转化成一个集合 old_key_set = set(old_dict.keys()) ###set(),把新字典的key转化成一个集合 new_key_set = set(new_dict.keys()) ###定义一个需要删除的集合,set的difference()求出在老字典的key而不在新字典的key的集合 remove_set = old_key_set.difference(new_key_set) ###删除老字典的条目 del old_dict["".join(list(remove_set))] ###定义一个需要新增的集合 update_set = new_key_set.difference(old_key_set) ###新增新字典的条目 old_dict["".join(list(update_set))] = new_dict["".join(list(update_set))] ###查找需要更新的key,我采取的方法是遍历两个字典 for i in old_dict: for j in new_dict: if i == j and old_dict[i] != new_dict[j]: old_dict[i] = new_dict[j] print(old_dict)
结果:
{‘#1‘: 4, ‘#2‘: 4, ‘#3‘: 2}
时间: 2024-10-29 14:17:02