Python-集合 字典-set dict fronzenset
集合 set
1. 无序
2. 去重
3. 定义空集 set()
numbers = {1, 3, 4, 5, 6, 5, 4, 4, 7, 8}
print(numbers)
print(numbers)
集合操作
1. 求差集 - .difference
2. 求交集 & .intersection
3. 求并集 | .union
student_python = {"xiaoWang", "xiaoMing", "lvChaBiao", "baiLianHua"}
student_golang = {"xiaoWang", "beimenchuixue", "ximenchuifeng"}print("only study python student: ", student_python - student_golang)
print("study python and golang student: ", student_python & student_golang)
print("total students : ", student_python | student_golang)
集合更新元素
1. 添加一个元素 add
2. 添加多项 update
3. 删除一项,不存在,报错 remove
4. 安全删除,没有则返回None discard
students = {"BeiMenChuiXue","QiNiuYun", "BoKeYuan"}
# 添加一个元素
students.add("JinRiTouTiao")
print(students)# 添加多个元素
students.update(["TengXun", "DouYing"])
print(students)# 删除一项
students.remove("TengXun")
print(students)# 安全删除
print(students)
status = students.discard("JinRiTouTiao")
if status == None:print("rm success")
else:print("rm fail")
print(students)
集合判断
1. 子集 issubset
2. 父集 issuperset
3. 交集 isdisjiont
python_class = {"BeiMenChuiXue", "QiNiuYun", "AliYun"}
golang_class = {"BeiMenChuiXue", "QiNiuYun"}# 判断子集
if golang_class.issubset(python_class):print("golang_class -> python_class")
else:print("golang_class !-> python_class")# 判断父集
if python_class.issuperset(golang_class):print("python_class <- golang_class")
else:print("python_class !<- golang_class")# 判断交集,无交集则返回真,或者有空交集返回真
if python_class.isdisjoint(golang_class):print("陌路")
else:print(python_class & golang_class)
fronzet
一旦定义,无法修改的集合
字典 dict
1. 定义空字典 dict() {}
2. 无序
3. key去重, 有重复key取最后的key对应的value值
4. {key: value,...}
value任意类型: int float bool str list tuple set dict
key必须是不可变类型 int float bool str tuple
student_score = {"xiaoWang": 99,"xiaoLi": 77,"beimenchuixue": 99,"lvChaBiao": 90,"ximenchuifeng": 88
}print(student_score.get("beimenchuixue", None))
print(student_score.pop("lvChaBiao"))
student_score.update({"xiaoWang": 66,
})
print(student_score)
print(student_score.items())
print(student_score.keys())
print(student_score.values())
访问
1. 通过key访问value [key]
2. 安全访问方式 .get()
set 和 dict实现原理 hash表(连续内存空间,存在空白空间)
带来特性:
1. dict查找的性能远远大于list
2. list随着list数量的增长, 查找时间会增大
3. 查找在dict中不会随着dict增大而增大
dict 原理实现过程
dict存入数据过程
1. 对 key进行 hash运算 ,再进行偏移量 -> 计算出放入位置
2. 位置冲突则,对key取一个值,再加上一个随机值,如果再冲突则再多取一个值,加上随机值 -> 计算得到放入位置
# 直接找到值,时间复杂度为 O(1)
查找过程
1. 计算key的hash值
2. 用hash值的一部分定义hash表中位置
3. 判断表元是否为空,为空则keyError
4. 判断key是否相等,如果不相等则再次取hash值的另外部分进行查找,如果找到则直接返回表元数据
set 必须是可hash, dict的key必须是可hash
dict内存花销大,源于hash表的特性,查询速度快,添加数据有可能改变数据顺序(重新分配hash表和插入冲突解决机制)
判断一个元素是否在集合中和字典的key是否在字典中 in
student_score = {"xiaoWang": 99,"xiaoLi": 77,"beimenchuixue": 99,"lvChaBiao": 90,"ximenchuifeng": 88
}print("xiaoWang" in student_score)
print(99 in student_score)
转载于:https://www.cnblogs.com/2bjiujiu/p/9062016.html
Python-集合 字典-set dict fronzenset相关推荐
- 1.4、Python数据结构——字典(dict)
目录 1.定义字典 2.使用字典 2.1.访问字典,用键查找 2.2.修改字典 2.3.新增元素 2.4.删除元素 3.字典的其他操作 3.1.clear(),清空字典所有元素 3.2.copy(), ...
- Python中字典(dict)的用法详解
字典是一种可变容器模型,且可存储任意类型对象, 字典的每个键值对(key=>value)都是用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中,格式如下: my_dict = ...
- Python——集合字典解析的对象无序和无副本特性
>>> [x + y for x in [1,2,3] for y in [4,5,6]] [5, 6, 7, 6, 7, 8, 7, 8, 9] >>> {x + ...
- python入门 字典(dict)——将元组和列表转换成字典
字典 字典由键(key)和值(value)成对组成,键和值中间以冒号:隔开,项之间用逗号隔开,整个字典由大括号{ }括起来格式如下: dict_var = {key1 : value1, key2 : ...
- python获取字典键值集合_Python集合字典
Python集合&字典 @ 字典 字典的几种定义方式 第一种 字典{key1 : value1, key2 : value2, ......} dict1 = {'one': 1, 'two' ...
- python数据类型——字典表dictionary和元组tuple基本操作举例
python数据类型--字典表dict和元组tuple基本操作举例 * 字典表dict 1. 字典表dict的声明 * --------- ① 花括号{} 声明法 * --------- ② dict ...
- python 删除set指定值_python3基础04字典(dict)和集合(set)
本节梳理python中另外两种容器字典(dict)和集合(set)的基本用法: 欢迎微信随缘关注@pythonic生物人 目录 1.字典 字典创建 字典使用 返回字典中元素个数 判断字典是否存在某个键 ...
- Python入门篇-高级数据类型集合(set)和字典(dict)
Python入门篇-高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集合(set) 1>.集合的特点 约定set 翻译为集合c ...
- python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...
本章将会介绍 Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因 ...
最新文章
- Python培训讲解二叉树的三种深度
- JDK/Java 14 正式发布!然而我还在用 Java 8...
- Android应用开发基础篇(9)-----SharedPreferences
- 计算机视觉开源库OpenCV之CommandLineParser使用方法
- 计算机操作系统开启审计功能,深入浅出理解操作系统安全
- Hyperledger Fabric 管道(3) 如何做到数据隔离?
- 请谈下Android消息机制,复习指南
- java五子棋源代码_java 五子棋游戏源码
- 系统新模块增加需要哪些步骤_人工智能之父的问题解决策略:模块化
- JS:ES6-3 解构赋值与模板字符串
- String变量作为参数传递的是String变量的副本
- 在Ubuntu 18.04中更改时区
- 数据结构课设——航空航天订票系统
- cryptojs AES加密
- 秒懂设计模式之桥接模式(Bridge Pattern)
- ARM920T的MMU
- 金桔蓝牙LoRa主被动一体定位系统原理
- @property python知乎_【python】__slots__与@property
- cocos2dx画扇形
- 古风尚婚纱摄影--决定
热门文章
- jenkins+Xcode+蒲公英实现ipa自动打包发布全攻略
- unity 粒子系统面板参数释义
- 老师发的周报写法,之前自己太随意没有规则了QAQ
- 初识powerpoint的计算机教案,《初识PowerPoint》教学设计
- 头歌 初识Redis
- domoticz折腾指南--通过esp_easy固件控制继电器开关
- STM-1和SDH是什么关系?SONET与SDH是什么关系?
- C 二维数组存入学生成绩 ,并求平均分,对平均分降序排序
- 我的2017——作为一名程序员,我重新思考了我生活的目标
- 苹果显示付款方式无效_最全实用收藏贴,如何设置苹果手机支付?令人头疼的问题终于解决...