当前位置: 首页 > news >正文

python 内置类型简述(4) —— 集合映射类(set、frozenset、dict)

注:Iterable[int] 为任一元素为 int 类型的可迭代对象,如列表 [1, 2, 3]
注:set() 为一个集合实例,可用任一列表替换(如 {‘asd’}),frozenset()、dict() 同理
注:set | frozenset | dict 表示参数可为 set、frozenset、dict 任一类型,set() | frozenset() | dict() 同理

1. 新建字典

{key: value for key, value in Iterable}:字典推导式,根据 Iterable 中元素生成列表
{key: value for value, key in Iterable}
{key: value for key, value in Iterable if …}:选择 Iterable 中符合条件的元素

dict().fromkeys(Iterable):使用 iterable 的键创建字典,键值设为 None
dict().fromkeys(Iterable, Any):设置键值为 Any

2. 集合基本运算(basic_operate)

交集运算
set() | frozenset()
set() & set()
set().intersection(Iterable, …)
set().intersection_update(Iterable, …):同时更新 set

并集运算
set() | frozenset()
set() | set()
set().union(Iterable, …)
set().update(Iterable, …):同时更新 set

差集运算
set() | frozenset()
set() - set()
set().difference(Iterable, …)
set().difference_update(Iterable, …):同时更新 set

异或运算(对称差)
set() | frozenset()
set() ^ set()
set().symmetric_difference(Iterable, …)
set().symmetric_difference_update(Iterable, …):同时更新 set

3. 元素个数(length)

len(set | frozenset | dict)

4. 浅拷贝(copy)

set() | dict().copy()

5. 字典排序(sort)

reversed(dict)

sorted(dict):对 dict 键进行排序
sorted(dict ,reverse=[True]):反向排序
sorted(dict().items(),key=[lambda d: d[1]]):对 dict 键值对进行排序(根据 dict 值进行排序)
sorted(dict().items(),key=[lambda d: (d[1], d[0])]):对 dict 键值对进行排序(首先根据 dict 值进行排序,值相同时根据键进行排序)

6. 查找某个元素(select_elem)

… in …
… not in …

key in dict() | dict().values():判断 键 是否为字典中的键
(key, value) in dict().items():判断 键值对 是否为字典元素

dict().get(Any):返回 dict 键 Any 对应的值;若不存在键 Any,则返回 None
dict().get(Any, Any):若不存在键 Any_1,则返回 Any_2

dict().setdefault(Any):返回 dict 键 Any 对应的值;若不存在键 Any,则插入值为 None 的键 Any
dict().setdefault(Any, Any):若不存在键 Any_1,则插入值为 Any_2 的键 Any_1

7. 集合添加元素(add_elem)

set().add(Any):将元素 Any 添加到 set 中

8. 删除某个元素(delete_elem)

set().pop():返回 set 中第一个元素,并将其从 set 中移除
set().remove(Any):移除 set 中元素 Any,若不存在元素 Any,引发 KeyError
set().discard(Any):移除 set 中的元素 Any

dict().pop(Any[‘key’]):返回 dict 中键为 key 的元素值,并将其从 dict 中移除(未找到 key,引发 KeyError)
dict().pop(Any[‘key’], [Any[‘default’]]):移除 dict 中键为 key 的元素(未找到 key,返回 default)
dict().popitem():移除最新加入 dict 的键值对
del dict()[Any]:若不存在键 Any,引发 KeyError

9. 集合比较

set() | frozenset().isdisjoint(Iterable):set 中没有与 Iterable 共有的元素,则返回 True

set() | frozenset() <= set() | frozenset():set_1 是 set_2 的子集,则返回 True
set() | frozenset().issubset(Iterable):set 中每个元素都在 Iterable 中,则返回 True
set() | frozenset() < set() | frozenset():set_1 是 set_2 的真子集,则返回 True

set() | frozenset() >= set() | frozenset():set_2 是 set_1 的子集,则返回 True
set() | frozenset().issuperset(Iterable):Iterable 中每个元素都在 set 中,则返回 True
set() | frozenset() > set() | frozenset():set_2 是 set_1 的子集,则返回 True

10. 获取字典视图(get_view)

list(dict):返回以 dict 的键为元素的列表
iter(dict):返回以 dict 的键为元素的迭代器

dict().keys():返回由 dict 值组成的新视图
dict().values():返回由 dict 键组成的新视图
dict().items():返回由 dict 项 (键,值) 组成的新视图

11. 字典拼接(concatenate)

dict() | dict():使用 dict_2 的键值对更新 dict_1,覆盖原有的键
{**dict(), **dict()}
dict().update(dict | Iterable(Any, Any)):使用 dict_2 的键值对或 Iterable 中的值更新 dict_1,覆盖原有的键

12. 字典拆包(unpack)

{**dict(), **dict()}:返回一个字典,元素为 dict_1 与 dict_2 中元素值,dict_2 会覆盖 dict_1 的键
{**dict(), Any: Any}:返回一个字典,元素为 dict_1 中元素值与 (Any,Any) 键值对,(Any,Any) 键值对 覆盖 dict_1 的键

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 蓝凌OA 文件Copy导致远程代码执行漏洞复现(XVE-2023-18344)
  • MyBatis的原理?
  • Vim(Vi IMproved)
  • 2.设计模式--创建者模式--单例设计模式
  • docker 容器内部UI映射host
  • STM32智能工业自动化监控系统教程
  • 科普文:详解23种设计模式
  • 代码随想录——分割等和子集(Leetcode LCR 101)
  • 【STC89C51单片机】定时器/计数器的理解
  • Lianwei 安全周报|2024.07.15
  • LLM 构建Data Multi-Agents 赋能数据分析平台的实践之④:数据分析之三(数据展示)
  • Jenkins 安装、部署与配置
  • JVM:自动垃圾回收
  • flutter ios打包 xcode报错module ‘xxx‘ not found
  • Python爬虫入门篇学习记录
  • 「面试题」如何实现一个圣杯布局?
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  •  D - 粉碎叛乱F - 其他起义
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript HTML DOM
  • laravel5.5 视图共享数据
  • linux安装openssl、swoole等扩展的具体步骤
  • oschina
  • Python学习之路13-记分
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Vue官网教程学习过程中值得记录的一些事情
  • 后端_MYSQL
  • 手机端车牌号码键盘的vue组件
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • FaaS 的简单实践
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​如何在iOS手机上查看应用日志
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (1)Nginx简介和安装教程
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LeetCode C++)盛最多水的容器
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (黑马C++)L06 重载与继承
  • (蓝桥杯每日一题)love
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (四)图像的%2线性拉伸
  • (一) springboot详细介绍
  • (一)、python程序--模拟电脑鼠走迷宫
  • ***通过什么方式***网吧
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 获取url的方法
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .NET学习全景图
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @GetMapping和@RequestMapping的区别