集合 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. 1.4、Python数据结构——字典(dict)

    目录 1.定义字典 2.使用字典 2.1.访问字典,用键查找 2.2.修改字典 2.3.新增元素 2.4.删除元素 3.字典的其他操作 3.1.clear(),清空字典所有元素 3.2.copy(), ...

  2. Python中字典(dict)的用法详解

    字典是一种可变容器模型,且可存储任意类型对象, 字典的每个键值对(key=>value)都是用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中,格式如下: my_dict = ...

  3. 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 + ...

  4. python入门 字典(dict)——将元组和列表转换成字典

    字典 字典由键(key)和值(value)成对组成,键和值中间以冒号:隔开,项之间用逗号隔开,整个字典由大括号{ }括起来格式如下: dict_var = {key1 : value1, key2 : ...

  5. python获取字典键值集合_Python集合字典

    Python集合&字典 @ 字典 字典的几种定义方式 第一种 字典{key1 : value1, key2 : value2, ......} dict1 = {'one': 1, 'two' ...

  6. python数据类型——字典表dictionary和元组tuple基本操作举例

    python数据类型--字典表dict和元组tuple基本操作举例 * 字典表dict 1. 字典表dict的声明 * --------- ① 花括号{} 声明法 * --------- ② dict ...

  7. python 删除set指定值_python3基础04字典(dict)和集合(set)

    本节梳理python中另外两种容器字典(dict)和集合(set)的基本用法: 欢迎微信随缘关注@pythonic生物人 目录 1.字典 字典创建 字典使用 返回字典中元素个数 判断字典是否存在某个键 ...

  8. Python入门篇-高级数据类型集合(set)和字典(dict)

    Python入门篇-高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集合(set) 1>.集合的特点 约定set 翻译为集合c ...

  9. python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...

    本章将会介绍 Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因 ...

最新文章

  1. Python培训讲解二叉树的三种深度
  2. JDK/Java 14 正式发布!然而我还在用 Java 8...
  3. Android应用开发基础篇(9)-----SharedPreferences
  4. 计算机视觉开源库OpenCV之CommandLineParser使用方法
  5. 计算机操作系统开启审计功能,深入浅出理解操作系统安全
  6. Hyperledger Fabric 管道(3) 如何做到数据隔离?
  7. 请谈下Android消息机制,复习指南
  8. java五子棋源代码_java 五子棋游戏源码
  9. 系统新模块增加需要哪些步骤_人工智能之父的问题解决策略:模块化
  10. JS:ES6-3 解构赋值与模板字符串
  11. String变量作为参数传递的是String变量的副本
  12. 在Ubuntu 18.04中更改时区
  13. 数据结构课设——航空航天订票系统
  14. cryptojs AES加密
  15. 秒懂设计模式之桥接模式(Bridge Pattern)
  16. ARM920T的MMU
  17. 金桔蓝牙LoRa主被动一体定位系统原理
  18. @property python知乎_【python】__slots__与@property
  19. cocos2dx画扇形
  20. 古风尚婚纱摄影--决定

热门文章

  1. jenkins+Xcode+蒲公英实现ipa自动打包发布全攻略
  2. unity 粒子系统面板参数释义
  3. 老师发的周报写法,之前自己太随意没有规则了QAQ
  4. 初识powerpoint的计算机教案,《初识PowerPoint》教学设计
  5. 头歌 初识Redis
  6. domoticz折腾指南--通过esp_easy固件控制继电器开关
  7. STM-1和SDH是什么关系?SONET与SDH是什么关系?
  8. C 二维数组存入学生成绩 ,并求平均分,对平均分降序排序
  9. 我的2017——作为一名程序员,我重新思考了我生活的目标
  10. 苹果显示付款方式无效_最全实用收藏贴,如何设置苹果手机支付?令人头疼的问题终于解决...