7、python数据类型之集合set
数据类型之集合set
set 不允许重复的无序集合,不能通过下标取值,因为无序
1、创建
创建空集合
s ={} 默认类型为字典,所以不是空集合,空集合如下
s = set()
s = {11,12,12,34,23} #字典是有键值对,集合没有
s = set()#括号内可以接收可以迭代的元素,str list tuple dict
2、转换
s = ([11,123,1234,12345])
l = "123"
l = [1,2,3,4]
l = (1,2,3,4)
s = set(l)
3、方法
#集合中元素无序不重复
st = {11,22,33,44,55,66}
#集合中添加元素
st.add(77)
print(st)
a = {11,22,33,55,66}
b = {55,66,77,11}
#diference方法
#a.difference(b),a不同于b的元素有哪些,a保持不变
reta = a.difference(b)
print(a)
print(reta)
#b.difference(a),b不同于a的元素有哪些,b保持不变
print(b)
retb = b.difference(a)
print(retb)
#difference_update方法,找出a不同于b的元素并重新覆盖a
a.difference_update(b)
print(a)
#找出b不同于a的元素并覆盖b
b.difference_update(a)
print(b)
#找出a集合不同于b结合的的元素,b集合不同于a集合的元素,可以赋值给一个新集合
retab = a.symmetric_difference(b)
retba = b.symmetric_difference(a)
print(retab)
print(retba)
#找出a集合不同于b结合的的元素,b集合不同于a集合的元素,并将找到的结果更新到a结合
a.symmetric_difference_update(b)
print(a)
#找出b集合不同于a结合的的元素,a集合不同于b集合的元素,并将找到的结果更新到b结合
b.symmetric_difference_update(a)
print(b)
#discard移除集合中的元素,如果元素存在移除,不存在不报错
print(a)
a.discard(11)
print(a)
a.discard(456)
print(a)
#remove移除集合中的元素,如果元素存在移除,不存在报错
print(a)
a.remove(22)
print(a)
#111元素不存在与a中,下面的会报错
a.remove(111)
a.remove()
#intersaction取两个集合的交集,并可以赋值给一个新的集合
retinab = a.intersection(b)
print(retinab)
#a.intersection_update(b)取两个集合的交集,并将得到的集合更到集合a
a.intersection_update(b)
print(a)
#并集union
#取a集合和b集合的并集
retuab = a.union(b)
print(retuab)
#update将b集合更新追加到a集合中
a.update(b)
print(a)
#a.isdisjoint(b)
t = a.isdisjoint(b)
print(t)
#a.issubset(b) a是不是b的子序列
print(a.issubset(b))
#a.issuperset(b) 是不是b的父序列
print(a.issuperset(b))
#a.pop()把一个元素移除,可以将这个移除的值赋值给一个变量
ta = a.pop()
print(ta)
#练习:寻找差异,并更新old字典
#将old_dict、new_dict中都存在的更新,old_dict在new_dict中不存在的删除
#new_dict在old_dict中不存在的,追加到old中去
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 }
}
k1 = old_dict.keys()
k2 = new_dict.keys()
k1_set = set(k1)
k2_set = set(k2)
k1_d_k2 = k1_set.difference(k2_set)
print(k1_d_k2)
for i1 in k1_d_k2:
old_dict.pop(i1)
print(old_dict)
k2_d_k1 = k2_set.difference(k1_set)
print(k2_d_k1)
for i2 in k2_d_k1:
old_dict[i2] = new_dict[i2]
print(old_dict)
k1_inter_k2 = k1_set.intersection(k2_set)
print(k1_inter_k2)
for i3 in k1_inter_k2:
old_dict[i3] = new_dict[i3]
print(old_dict)
print(old_dict==new_dict)
7、python数据类型之集合set的更多相关文章
- 【转】Python数据类型之“集合(Sets)与映射(Mapping)”
[转]Python数据类型之“集合(Sets)与映射(Mapping)” 一.集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的 ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之集合类型(set)
集合!Python中的集合数据基本上是为了方便数学计算使用的. 什么是集合? 集合就是“确定的一堆东西”.集合里面的东西叫做元素. 特点:1. 集合里面是没有重复的元素的. 2. ...
- python 数据类型之集合
一.集合的定义: 定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key. 特性:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 二 ...
- Python数据类型-8 集合set
集合set set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素.集合使用大括号({})框定元素,并以逗号进行分隔.但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ...
- Python—数据类型之集合(Set)
1.集合是一个无序的,且不重复元素的集合.它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的. 2.基本功能包括关系测试和消除重复元素.注意:集合存在的意义就是去 ...
- Python数据类型之“集合(Sets)与映射(Mapping)”
一.集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个 ...
- Python基础-python数据类型之集合(四)
集合 集合是一个无序的,不重复的数据组合,基本功能包括关系测试和消除重复元素. 集合对象还支持 union,intersection,difference和 sysmmetric difference ...
- python 数据类型 之 集合
集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合 集合的三个特性: 1.确定性 (element必须可hash,不可变类型是可hash的) 2.互异性(集合中element 不能重复) ...
- python数据类型之集合
对python中集合的理解 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = set ...
随机推荐
- [原]NYOJ-组合数-32
大学生程序代写 http://acm.nyist.net/JudgeOnline/problem.php?pid=32 /*组合数 时间限制:3000 ms | 内存限制:65535 KB 难度: ...
- vc中播放mp3文件的方法小结
一般播放MP3常见的有两种方法,一种是自己解码,另外一种用系统的库,比如MCI,当然如果可以用控件直接用个控件会更方便. 1. 使用mci #include <windows.h> ...
- ACM学习历程—Hihocoder [Offer收割]编程练习赛1
比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...
- 【算法总结】Manacher's Algorithm
Manacher's Algorithm针对的是最长回文子串问题.对于此问题,最直接的方法是遍历每一个元素,遍历过程中以每一个字符为中心向两边扩展以寻找此字符为中心的最长回文子串.复杂度O(n2).M ...
- 使用Visual Studio进行单元测试-Part1
写在开头:Coding ain't done until all the tests run. No unit test no BB. -------------------------------- ...
- 51nod 1250 排列与交换——dp
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1250 仔细思考dp. 第一问,考虑已知 i-1 个数有多少种方案. ...
- Azure自动化部署服务 (2)
上一篇文章介绍了如何通过添加用户名和密码的方式实现自动化部署服务中与Azure Subscription的连接. 本文将介绍如何使用证书的方式实现Azure Automation与Azure的Subs ...
- 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式
可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...
- PHP7三元运算符 ?? 和 ?: 的区别
1. (expr1) ?? (expr2) 是 PHP7才有的功能,等同于: isset(expr1) ? expr1 : expr2 ; 2.(expr1) ?: (expr2) 是PHP5.3才 ...
- Zend Server 安装与配置图文教程
Zend Server是一款专业的PHP Web开发应用服务器,一些初次接触并使用此程序的朋友可能不太了解安装方法,本文为您提供了Zend Server 安装与配置图文教程,欢迎大家阅读,并提出自己的 ...