python基本数据类型——set
来源:互联网 发布:剑三的正太捏脸数据 编辑:程序博客网 时间:2024/05/16 11:59
一、集合的定义
set集合,是一个无序且不重复的元素集合。
集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。
二、集合的创建
s = set()s = {11,22,33,44}*注:创建空集合时,只能用set(),如果用第二种方法s={},创建的实际上是一个空字典。s = {}print(type(s))<class 'dict'>a=set('boy')b=set(['y', 'b', 'o','o'])c=set({"k1":'v1','k2':'v2'})d={'k1','k2','k2'}e={('k1', 'k2','k2')}print(a,type(a))print(b,type(b))print(c,type(c))print(d,type(d))print(e,type(e))执行结果如下:{'o', 'b', 'y'} <class 'set'>{'o', 'b', 'y'} <class 'set'>{'k1', 'k2'} <class 'set'>{'k1', 'k2'} <class 'set'>{('k1', 'k2', 'k2')} <class 'set'>
三、集合的功能
源码
基本功能:
- 增加(add, update)
a=set('python')a.add('tina')print(a)b=set('python')b.update('tina')print(b)执行结果如下:{'tina', 'o', 'p', 'n', 't', 'y', 'h'}{'o', 'i', 'p', 'a', 'n', 't', 'y', 'h'}##################由以上代码可以看出,add是单个元素的添加,而update是批量的添加。输出结果是无序的,并非添加到尾部。
- 删除(remove,discard,pop)
c={'p', 'i', 'h', 'n', 'o', 'y', 't'}c.remove('p')print(c)c={'p', 'i', 'h', 'n', 'o', 'y', 't'}c.discard('p')print(c)c={'p', 'i', 'h', 'n', 'o', 'y', 't'}c.pop()print(c)执行结果如下: {'i', 'h', 't', 'o', 'y', 'n'} #####当执行c.remove('p','i')和c.discard('p','i')时,报错:TypeError: remove() takes exactly one argument (2 given),说明remove和discard删除元素时都只能一个一个的删,同add对应。#################################################################################remove,pop和discard的区别:discard删除指定元素,当指定元素不存在时,不报错;remove删除指定元素,但当指定元素不存在时,报错:KeyError。pop删除任意元素,并可将移除的元素赋值给一个变量,不能指定元素移除。
set的特有功能:
s1 = {0}s2 = {i % 2 for i in range(10)}s = set('hi')t = set(['h', 'e', 'l', 'l', 'o'])print(s.intersection(t), s & t) # 交集print(s.union(t), s | t) # 并集print(s.difference(t), s - t) # 差集print(s.symmetric_difference(t), s ^ t) # 对称差集print(s1.issubset(s2), s1 <= s2) # 子集(被包含)print(s1.issuperset(s2), s1 >= s2) # 父集(包含)执行结果如下:{'h'} {'h'}{'i', 'e', 'h', 'l', 'o'} {'i', 'e', 'h', 'l', 'o'}{'i'} {'i'}{'e', 'l', 'o', 'i'} {'e', 'l', 'o', 'i'}True TrueFalse Falses = {11,22,33}t = {22,44}print(s.isdisjoint(t))#(disjoint脱节的,)即如果没有交集,返回True,否则返回Falses.difference_update(t)#将差集覆盖到源集合,即从当前集合中删除和B中相同的元素print(s)执行结果如下:False{33, 11}s = {11,22,33}t = {22,44}s.intersection_update(t)#将交集覆盖到源集合print(s)执行结果如下:{22}s = {11,22,33}t = {22,44}s.symmetric_difference_update(t)#将对称差集覆盖到源集合print(s)执行结果如下:{33, 11, 44}
四、练习题
寻找差异:哪些需要删除?哪些需要新建?哪些需要更新?
#!/usr/bin/python# -*- coding:utf-8 -*-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},}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},}new_set = set()old_set = set()for i in new_dict: new_set.add(i)for j in old_dict: old_set.add(j)new_add = new_set.difference(old_set) #new_dict中有,old_dict中沒有old_del = old_set.difference(new_set) #old_dict中有,new_dict中沒有update = new_set.intersection(old_set) #old_dict和new_dict共同有的,需要把new_dict更新到old_dict中for k in new_add: old_dict[k] = new_dict[k] #將new_dict中新增的內容添加到old_dict中for v in old_del: del old_dict[v] #將old_dict中失效的內容刪除for m in update: old_dict[m] = new_dict[m] #把new_dict更新到old_dict中print(old_dict)
阅读全文
0 0
- python基本数据类型——set
- Python基本数据类型之set
- python学习—-基本数据类型
- python学习—-基本数据类型
- Python基础02——基本数据类型
- python基本数据类型——tuple
- python基本数据类型——list
- python基本数据类型——str
- python基本数据类型——int
- Python基础——基本数据类型
- Python核心数据类型——集合(Set)
- Python,set数据类型
- python——基本数据类型+常用操作符+循环
- python语言基础知识——基本数据类型详解
- 第一节:Python的基础—基本的数据类型
- python set基本操作
- python基本数据类型
- python 的基本数据类型
- Verilog中可综合及不可综合语句概述
- 红黑树的双旋转
- python基本数据类型——int
- sklearn:点互信息和互信息
- N!末尾0的个数
- python基本数据类型——set
- Django Tutorial Part2
- NestedScrollView嵌套ListView,RecyclerView
- 页面自动跳转实现方法
- python版本与编码的区别
- LinkCode 下一个排列、上一个排列
- Verilog中if..else和case语句分析
- C#_在VS2010下进行单元测试
- Tornado Web 框架