# 测试图书

测试图书

# 测试页面

1121212121

# 测试章节

# 新页面

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-python%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%9C%89%E5%93%AA%E4%BA%9B-%E8%80%83%E7%82%B9%EF%BC%9A-%E4%BD%A0%E6%98%AF">1. # Python数据类型有哪些

<div class="ace-line ace-line old-record-id-WfUzdBhDmoargQxuErlcA8zSnne">**考点：**</div><div class="ace-line ace-line old-record-id-QdDPd26bYoi8GnxHbR2c096Fnac">你是否懂**可变 / 不可变**，会不会踩坑</div><div class="ace-line ace-line old-record-id-CCSSd9mcqoKXmjxkBCHcwyLLn8g">你是否清楚各类型**适用场景**</div><div class="ace-line ace-line old-record-id-X9cEdiCZro7cN9xSopHcEXAVnSb">你基础扎不扎实，有没有写过实际代码</div><div class=" old-record-id-QdgKd5owroeBpexLprXci5hBnte" data-type="divider">---

</div><div class="ace-line ace-line old-record-id-CoIpdcDnoo48lyxReuwc0LEXnpc">Python 数据类型主要分为**基本数据类型**和**复合 / 容器数据类型**两大类，另外还有一些高级常用类型。</div></div>### 基本数据类型（不可变类型）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-int%EF%BC%9A%E6%95%B4%E6%95%B0%EF%BC%8C%E5%A6%82-1%E3%80%81100%E3%80%81-5-fl">- <div>**int**：整数，如 1、100、-5</div>
- <div>**float**：浮点数，如 3.14、2.0</div>
- <div>**bool**：布尔型，只有 `True` 和 `False`</div>
- <div>**str**：字符串，用单引号 / 双引号包裹，如 `"test"`</div>
- <div>**NoneType**：空类型，只有一个值 `None`</div>

</div>### 容器 / 复合数据类型（可存放多个元素）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-list%EF%BC%88%E5%88%97%E8%A1%A8%EF%BC%89%EF%BC%9A%E6%9C%89%E5%BA%8F%E3%80%81%E5%8F%AF%E5%8F%98%E3%80%81%E5%8F%AF%E9%87%8D%E5%A4%8D%EF%BC%8C%E7%94%A8">- <div>**list（列表）**：有序、可变、可重复，用 `[]` 表示</div>
- <div>**tuple（元组）**：有序、不可变、可重复，用 `()` 表示</div>
- <div>**dict（字典）**：键值对结构，key 必须不可变，用 `{}` 表示</div>
- <div>**set（集合）**：无序、无重复元素，用于去重和集合运算</div>

</div>### 常见高级 / 扩展类型（加分项）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-bytes-%2Fbytearray%EF%BC%9A%E5%AD%97%E8%8A%82%E7%B1%BB">- <div>bytes /bytearray：字节类型</div>
- <div>complex：复数</div>
- <div>内置模块中的类型：`datetime`、`array`、`enum` 等</div>

<div class=" old-record-id-N1Z6dPoDJoebfjxNeidcCuNrntf" data-type="divider">---

</div><div class="ace-line ace-line old-record-id-OeDmdjLvmoJN9Lxh5OTcjXJPn5g">这里有一个非常关键的考点：**可变类型和不可变类型**。</div>- <div>**不可变类型**：int、float、str、bool、tuple、None特点：修改后会生成新对象，不会改变原数据。</div>
- <div>**可变类型**：list、dict、set特点：可以在原对象上直接增删改，不会生成新对象。</div>

<div class="ace-line ace-line old-record-id-POaoduyDEoHUjkxR9OFccJe2nXe">这道题本身不难，但**可变与不可变**是后面一系列问题的基础。回答时先分类、再举例、最后点出核心考点，面试官会直接觉得你基础很扎实。</div>2. # 可变类型和不可变类型有哪些使用场景？

</div>## 一、不可变类型的实际工作例子（int /str/tuple /bool）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-int-%E6%95%B4%E6%95%B0%EF%BC%88%E4%B8%8D%E5%8F%AF%E5%8F%98%EF%BC%89-%E7%94%A8%E4%BE%8B%E7%BC%96%E5%8F%B7%EF%BC%9Acas">1. ## int 整数（不可变）

- <div>用例编号：`case_id = 1001`</div>
- <div>接口用例的超时时间：`timeout = 5`</div>
- <div>断言状态码：`assert status_code == 200`</div>
- <div>循环次数：`for i in range(10)`</div>

<div class="ace-line ace-line old-record-id-KzCOd3CwioaokExYZlxcU2OKnQi">**特点**：数字一旦定义，不会在代码里偷偷被改掉，非常安全。</div><div class=" old-record-id-Vw8pdXGBaouBorxbECQcaijJnTc" data-type="divider">---

</div>2. ## str 字符串（不可变）

- <div>接口地址：`url = "``http://xxx.com/login``"`</div>
- <div>请求头：`token = "Bearer xxxxx"`</div>
- <div>测试数据：`username = "test01"`</div>
- <div>断言信息：`assert "登录成功" in response.text`</div>

<div class="ace-line ace-line old-record-id-YL1mdUXEGo55hbx7jEXcLI0pn8d">**工作重点**：字符串不可变，所以**不会在函数传递中被意外修改**，非常适合做配置、固定参数。</div><div class=" old-record-id-ERc0dlxnVoFvmpxOTBqciOtrnCg" data-type="divider">---

</div>3. ## tuple 元组（不可变）【测试高频】

- <div>接口用例的参数集合：</div>

<div class=" old-record-id-EnyAd1xuxoST47xAIcEcpNXQnjI" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>多环境配置：</div>

<div class=" old-record-id-UdjfdzTNsoGumVxj6GLcWVBknyh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>数据库查询条件：</div>

<div class=" old-record-id-BXI3dXMtKo58FrxPN1PcSpNOnve" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-QD14d3BYFoPVW9xrqkwcV8RKnZs">**为什么用 tuple？**因为**不可变 = 安全**，防止代码里不小心把用例关键字段改掉，导致用例失败。</div><div class=" old-record-id-GFkYd8SgjoKdLxxIiwLc5iGAnpf" data-type="divider">---

</div>4. ## bool 布尔（不可变）

- <div>用例开关：`is_run = True`</div>
- <div>断言结果：`assert is_success is True`</div>

<div class=" old-record-id-Lyncd69RRo5zQ8xTvXfc1YBOn6g" data-type="divider">---

</div></div>## 二、可变类型的实际工作例子（list /dict/set）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-list-%E5%88%97%E8%A1%A8%EF%BC%88%E5%8F%AF%E5%8F%98%EF%BC%89%E3%80%90%E6%9C%80%E5%B8%B8%E7%94%A8%E3%80%91-%E5%AD%98%E5%82%A8%E5%A4%9A">1. ## list 列表（可变）【最常用】

- <div>存储多条测试用例：</div>

<div class=" old-record-id-YyRgdKBmgoBG4uxCC38cbaednWg" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>动态添加用例：</div>

<div class=" old-record-id-HzqddZupDoxt5BxvvntcaOPhnvd" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>接口返回的列表数据：</div>

<div class=" old-record-id-FXLxdqCHso3yTexhsW3cSNVYntf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-CAkfdfZiuoYXmPxUabgcZnPZnAb">**特点**：可以随时增删改，适合**动态数据、批量数据**。</div><div class=" old-record-id-EB4ydDh8xoIOpwxqkSicJkmXnPf" data-type="divider">---

</div>2. ## dict 字典（可变）【测试核心】

- <div>接口请求参数：</div>

<div class=" old-record-id-YhXMdMVF0oF0EMxxGzkcHCHonCc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>接口返回结果：</div>

<div class=" old-record-id-KS5udI6gDo9R4ix2WRtcJZHXn7y" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>测试报告数据：</div>

<div class=" old-record-id-NSP0dWLq5oT32WxJo1xclfr7nrf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-YSM6dB4e3o9Pf3xgnDbcpkrLnjf">**工作重点**：字典是**键值对**，取数据极快，是接口测试最最常用的数据类型。</div><div class=" old-record-id-OpQYdfD6Co2YkXxWKp3c4cY1nxg" data-type="divider">---

</div>3. ## set 集合（可变）

- <div>自动去重：</div>

<div class=" old-record-id-T10VdEjyVoOSNFxPq6zcDfGxnlf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>判断用户是否已存在：</div>

<div class=" old-record-id-LaQbdoft0o87vzxCE63cPflYnte" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-E2fDd3MYmo3Edkxoz94c66Z7nEU">**用途**：去重、快速判断存在。</div><div class=" old-record-id-AK29drxfcogcO1x2I1bc4EIInDb" data-type="divider">---

</div></div>## 不可变类型（int/str/tuple）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%94%A8%E4%BA%8E%EF%BC%9A%E5%9B%BA%E5%AE%9A%E9%85%8D%E7%BD%AE%E3%80%81%E7%94%A8%E4%BE%8B%E5%85%B3%E9%94%AE%E5%AD%97%E6%AE%B5%E3%80%81%E7%8E%AF%E5%A2%83%E4%BF%A1%E6%81%AF%E3%80%81"><div class="ace-line ace-line old-record-id-CFOQdqEceoiTiFxZezvcxWWKncg">用于：**固定配置、用例关键字段、环境信息、数据库参数**目的：**保证数据不被意外修改，安全稳定**</div></div>## 可变类型（list/dict/set）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%94%A8%E4%BA%8E%EF%BC%9A%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E3%80%81%E8%BF%94%E5%9B%9E%E6%95%B0%E6%8D%AE%E3%80%81%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E5%88%97%E8%A1%A8%E3%80%81"><div class="ace-line ace-line old-record-id-Gg57dPsziokIZExY7KVcf60DnIf">用于：**请求参数、返回数据、测试用例列表、动态数据**目的：**方便增删改查，灵活处理业务数据**</div>3. # Python中数据类型相互直接转换方法

<div class="ace-line ace-line old-record-id-Jz8cd4c4yohgWYxyDl4cjr4wnOb">Python 类型转换非常统一，基本就是**内置函数强转**，记住这 8 个就够：</div>- <div>`int()` → 转整数</div>
- <div>`float()` → 转浮点数</div>
- <div>`str()` → 转字符串</div>
- <div>`bool()` → 转布尔值</div>
- <div>`list()` → 转列表</div>
- <div>`tuple()` → 转元组</div>
- <div>`set()` → 转集合</div>
- <div>`dict()` → 转字典（需要键值对结构）</div>

<div class=" old-record-id-J91qd5x94om78txRvlcce9mOnNw" data-type="divider">---

</div>1. ## 字符串 ↔ 数字（接口测试最常用）

<div class=" old-record-id-Pg42dYarHo4kzcxM1OpcdTKVnYc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-VbKbdcGhHos9Xkxb97acrcpOnJh">**工作场景**：接口返回是字符串，要做数值断言；或把数字拼接到 URL 里。</div><div class=" old-record-id-YCYMddJkmoBRFmx8aMmc7BzdnSc" data-type="divider">---

</div>2. ## 列表、元组、集合互转

<div class=" old-record-id-Wm6QdzzbjoY331xnmYWc4jXwnAc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-Ws8PdY5pPoD9OJxNSe4cl41xns5">**工作场景**：需要去重用 set，需要不可变数据用 tuple。</div><div class=" old-record-id-EjXId7YoFol0oXxIJoFcUmC1nAd" data-type="divider">---

</div>3. ## 转布尔值 bool ()（面试坑点）

<div class=" old-record-id-Jpbnd5x6aogFmpxIhfgcVb2gnFt" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-LgJKdC8DAoWnr5xtqvDckqwFngh">**考点**：空内容、0、None 为假，其他都为真。</div><div class=" old-record-id-Qp87d3ry9oMB3ZxlM4icvsnHnwd" data-type="divider">---

</div>4. ## 转字典 dict ()

<div class=" old-record-id-OgY0d7QwroqBjmxCk7lcKM46nvd" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-KsHDdp6dkoozjmxJEqncMPAOnIb">**工作场景**：处理用例数据、数据库结果转字典。</div><div class=" old-record-id-Pmcvd9yxvovkXKxxoPacOrnsnxe" data-type="divider">---

</div></div>## 高频注意点

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E4%B8%8D%E6%98%AF%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%83%BD%E8%83%BD%E8%BD%AC%E6%95%B0%E5%AD%97%E7%BA%AF%E6%95%B0%E5%AD%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%89%8D%E8%A1%8C">1. <div>**不是所有字符串都能转数字**纯数字字符串才行，`int("abc")` 直接报错</div>
2. <div>**集合、字典不能直接转数字**</div>
3. <div>**tuple 转 list 后才能增删改**</div>
4. <div>**list 转 set 会自动去重、且无序**</div>

<div class=" old-record-id-HzLXdHIQdo7sLwxRXSFc6kwVnfe" data-type="divider">---

</div></div>## **总结**

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%9C%A8-python-%E9%87%8C%EF%BC%8C%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2%E5%B0%B1%E6%98%AF%E7%94%A8%E5%AF%B9%E5%BA%94"><div class="ace-line ace-line old-record-id-HR4udmXuyoxwN6xEFUmcrJXzn5b">在 Python 里，类型转换就是用对应的内置函数：`int、float、str、bool、list、tuple、set、dict`。</div><div class="ace-line ace-line old-record-id-NTKAdZlxJoztfBxmHITcbngtnCg">实际工作中，最常用的就是**字符串和数字互转、列表集合互转**，做接口测试、自动化脚本时几乎天天用到。</div>4. # 除了内置函数，还有哪些方法可以实现数据类型转换?

<div class="ace-line ace-line old-record-id-DjcAdU588oCPKkxN6hacyiSKnde">除了 `int()/str()/list()` 这类内置强转函数，常用的类型转换方式还有 **4 类**，都是工作中高频使用的：</div>1. <div>**json 模块（str ↔ dict/list 互转）**</div>
2. <div>**eval /literal\_eval（字符串转原有类型）**</div>
3. <div>**encode /decode（str ↔ bytes 互转）**</div>
4. <div>**split /join（字符串与列表互转）**</div>

<div class="ace-line ace-line old-record-id-JiojdjoxhoEjcpxBsfYcT5aInkf">下面一个个讲用法和场景。</div><div class=" old-record-id-NSxidYM2yom8xYx4rSacsxf3nrh" data-type="divider">---

</div></div>## json 模块（接口测试最最常用）

### 接口测试：把返回的字符串转成字典（最常用）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8E%A5%E5%8F%A3%E8%BF%94%E5%9B%9E%E7%9A%84%E6%95%B0%E6%8D%AE%E6%98%AF%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A0%BC%E5%BC%8F%EF%BC%8C%E4%B8%8D%E8%83%BD%E7%9B%B4%E6%8E%A5%E5%8F%96%E5%80%BC"><div class="ace-line ace-line old-record-id-FnT8dF7nco1e98xVAnfc4KQSnEm">接口返回的数据是**字符串格式**，不能直接取值，必须用 `json.loads()` 转成字典。</div><div class=" old-record-id-OnuPdsxDgo0IRrx8M2ccB6AWnOe" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-UcNKdCTpPoCiTUxnv9RcpYzdnDf">**场景**：接口请求、接口自动化、结果判断。</div><div class=" old-record-id-TE7edzNoyoMPBHxoj4LcKPqVniY" data-type="divider">---

</div></div>### 接口测试：把字典转成字符串发送请求

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9E%84%E9%80%A0%E8%AF%B7%E6%B1%82%E4%BD%93%E6%98%AF%E5%AD%97%E5%85%B8%EF%BC%8C%E9%9C%80%E8%A6%81%E8%BD%AC%E6%88%90json-%E5%AD%97%E7%AC%A6"><div class="ace-line ace-line old-record-id-KKuLdGGgdofYqYxAgADcd3g8nnc">构造请求体是字典，需要转成**json 字符串**传给接口。</div><div class=" old-record-id-BzISdCcstoqZcFx98nCceGIbnEb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-MUBSdvWCCox38QxhJUlciNQtn6b">**场景**：POST 请求、请求体封装、接口联调。</div><div class=" old-record-id-Ibw7dzlSBonWZ8x9REsck5pvnid" data-type="divider">---

</div></div>### 读取配置文件：json 文件 → 字典

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E9%A1%B9%E7%9B%AE%E9%87%8C%E7%9A%84%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E3%80%81%E7%94%A8%E4%BE%8B%E9%85%8D%E7%BD%AE%EF%BC%8C%E9%83%BD%E5%AD%98%E5%9C%A8-co"><div class="ace-line ace-line old-record-id-PjP3dWCLBoarmhxZ7IfcD5yHnXb">项目里的环境配置、用例配置，都存在 `config.json` 文件中。</div><div class=" old-record-id-ON1jdgMyYo4smTx2NqMcYZdKnjo" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-M4HDde6JVopymNxX2gActQRqnMd">**场景**：多环境切换、读取配置、数据驱动。</div><div class=" old-record-id-LCgXdeCx0oN1fJx9bWfcNHVsnbg" data-type="divider">---

</div></div>### 写入数据到 json 文件

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8A%8A%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C%E3%80%81token%E3%80%81%E7%94%A8%E4%BE%8B%E6%95%B0%E6%8D%AE%E4%BF%9D%E5%AD%98%E5%88%B0%E6%96%87"><div class="ace-line ace-line old-record-id-KzXLdwLb6oo3ooxAJ2ucaBIkn5e">把测试结果、token、用例数据保存到文件。</div><div class=" old-record-id-EIcid3wjcof2ihx5r9TcFh3pnSc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-ZypjdbhSDoRqSPxkHzocwvIgnoe">**场景**：自动化测试结果记录、登录态保存、数据持久化。</div><div class=" old-record-id-LPzLdWO3docfOExEpfecXIAanKg" data-type="divider">---

</div></div>### 【必须记住的两个核心方法】

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-json.loads%28%29%EF%BC%9A%E5%AD%97%E7%AC%A6%E4%B8%B2-%E2%86%92-%E5%AD%97">- <div>**json.loads()**：字符串 → 字典</div>
- <div>**json.dumps()**：字典 → 字符串</div>
- <div>**json.load()**：读 json 文件 → 字典</div>
- <div>**json.dump()**：字典 → 写入 json 文件</div>

<div class=" old-record-id-PrFWdPKxVoGSRVxQxa7c7Q5pnEb" data-type="divider">---

</div><div class="ace-line ace-line old-record-id-Hf9EdMwBtofLiqxdOLJc2wMWnwd">在软件测试工作中，**json 模块最核心的 4 个场景：**</div>1. <div>**接口返回字符串转字典，用于断言**</div>
2. <div>**请求字典转字符串，用于接口请求**</div>
3. <div>**读取 json 配置文件**</div>
4. <div>**写入数据到 json 文件**</div>

<div class="ace-line ace-line old-record-id-A5dmdRxa9oBcycxAhTocgEeenif">它是**接口测试、自动化测试**最核心、最基础、最常用的模块。</div><div class=" old-record-id-CqvmdIRm8odvWrx6LEHc6pE2nKb" data-type="divider">---

</div><div class="ace-line ace-line old-record-id-ZRLudNvcroxM6qxMJqUcAkQAnRb">除了 `json` 模块，常用的还有 **3 种方式**，都能实现字符串和字典互转：</div>1. <div>**eval（简单粗暴，但不安全）**</div>
2. <div>**ast.literal\_eval（官方推荐、最安全）**</div>
3. <div>**正则表达式 re（极端场景手动解析）**</div>

</div>## eval（最简单，但不推荐生产使用）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%9B%B4%E6%8E%A5%E6%8A%8A%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%BD%93%E6%88%90-python-%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C"><div class="ace-line ace-line old-record-id-NUnud15bWoUsluxCd8acShVYnWb">直接把字符串当成 Python 代码执行。</div><div class=" old-record-id-TlW7dScLDo9WUfxwXvtcXWpZnoc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-VUvRdj4zWodb4HxCPwqc3ScFnLg">优点：</div>- <div>支持**单引号、双引号**</div>
- <div>不用导入模块</div>
- <div>能解析 list/tuple/dict 全部类型</div>

<div class="ace-line ace-line old-record-id-LIM9dRnKLovajbxyn05cGc2Mnne">缺点：</div>- <div>**极度不安全**</div>
- <div>用户传入恶意代码会直接执行</div>
- <div>公司项目**严禁使用**</div>

<div class=" old-record-id-XfwTd13ZNojqatxqaY0cIPVAnNe" data-type="divider">---

</div></div>## ast.literal\_eval（最推荐、最安全、企业标准方案）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E8%BF%99%E6%98%AF-eval-%E7%9A%84%E5%AE%89%E5%85%A8%E7%89%88%EF%BC%8C%E5%8F%AA%E4%BC%9A%E8%A7%A3%E6%9E%90%E6%95%B0%E6%8D%AE%E7%B1%BB"><div class="ace-line ace-line old-record-id-ITuVdjjTMoBMydxztRxcSJlFnNg">这是 **eval 的安全版**，只会解析数据类型，不执行代码。**面试必说这个！**</div><div class=" old-record-id-Pyi4dTUmZo7S0ZxwvNMcKw0inmg" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-UTuIdyOt4oUDOnxaOiJc35U7nId">优点：</div>- <div>✅ 支持单引号、双引号</div>
- <div>✅ 安全、不会执行恶意代码</div>
- <div>✅ 接口自动化、数据驱动**最常用**</div>
- <div>✅ 能解析 dict、list、tuple、int、str 等</div>

<div class="ace-line ace-line old-record-id-GHA5dPAhqoFNCPxl7Gcc97exnaf">缺点：</div>- <div>不能解析复杂表达式</div>

<div class="ace-line ace-line old-record-id-PCg8d2ORtoPJmsxJqXTcAdU8nxg">**工作场景：Excel 读取字典字符串、配置文件解析、用例数据处理**</div><div class=" old-record-id-ARjAdlsJ4ojJDHxwbaKcKpH8nXf" data-type="sheet">表格 还在加载中，请等待加载完成后再尝试复制</div><div class=" old-record-id-J1IldO94VobHxSxDhJzcZ15JnDd" data-type="divider">---

</div></div>## 正则 re.match/re.findall（手动解析）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9E%81%E7%AB%AF%E5%9C%BA%E6%99%AF%EF%BC%9A-%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%8D%E6%98%AF%E6%A0%87%E5%87%86-json-%E4%B8%8D"><div class="ace-line ace-line old-record-id-EFhWdpolNoKo2oxZJLrcq4uinkg">极端场景：</div>- <div>字符串不是标准 JSON</div>
- <div>不是 Python 格式</div>
- <div>脏数据、日志、报文</div>

<div class="ace-line ace-line old-record-id-WCfMdikGgoUKvLx3dJJcquVTnmf">手动提取 key、value 拼成字典。</div><div class=" old-record-id-O4TIdJu8DoD0ETxJTUZcn70tnib" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-Q5R1dshcfogNwRxezCpcW5MTnTg">优点：</div>- <div>能处理**任何不规则字符串**</div>

<div class="ace-line ace-line old-record-id-H8ipdVpG2ooBJ9xDzgecC1UEnRe">缺点：</div>- <div>麻烦</div>
- <div>一般只用在日志解析、抓包报文处理</div>

</div>## json.loads vs ast.literal\_eval

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-json.loads-%E5%8F%AA%E8%83%BD%E8%A7%A3%E6%9E%90%E5%8F%8C%E5%BC%95%E5%8F%B7-%E5%AE%89">1. <div>**json.loads**</div>
    1. <div>只能解析**双引号**</div>
    2. <div>安全</div>
    3. <div>只能解析标准 JSON</div>
2. <div>**ast.literal\_eval**</div>
    1. <div>**单引号、双引号都支持**</div>
    2. <div>安全</div>
    3. <div>解析能力更强</div>
    4. <div>**测试工作中更常用**</div>

<div class="ace-line ace-line old-record-id-WdeQduA5JoJ0ZHxrSptc8oc4n5c">面试和工作中，**优先用 ast.literal\_eval，其次用 json.loads**。</div></div>## encode /decode（字符串 ↔ 字节串）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-%E5%9C%BA%E6%99%AF-%E6%8E%A5"><div class=" old-record-id-B1uKde9BmovcOTxpnxbcfQaZnWf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-BHm4dNCJwoAHAIxEUYTc8jJFn4f">**场景**</div>- <div>接口二进制数据</div>
- <div>文件读写</div>
- <div>加密、签名、token 处理</div>

<div class=" old-record-id-SRnndOjhooya56x1URNcKpoXnsh" data-type="divider">---

</div></div>## split /join（字符串 ←→ 列表）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-%E5%9C%BA%E6%99%AF-%E5%A4%84"><div class=" old-record-id-U1xtdnSJkobXYHxSyt9cJVFsnvb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-Mv7YdPwhbofRoaxWe3ac4vr9nXf">**场景**</div>- <div>处理用例参数</div>
- <div>处理日志、URL 参数</div>
- <div>拼接断言关键字</div>

<div class=" old-record-id-R52EdBWLmo8mzAxDatXc0Y5hnvh" data-type="divider">---

</div></div>## yaml 模块（自动化框架必备）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E4%BD%9C%E7%94%A8%EF%BC%9A%E8%AF%BB%E5%8F%96-.yaml-%2F-.yml-%E9%85%8D"><div class="ace-line ace-line old-record-id-Mp9qdEc52ouO2LxEnWDcHf0fnQh">**作用**：读取 `.yaml` / `.yml` 配置文件 → 转字典 / 列表。</div><div class="ace-line ace-line old-record-id-HVHYdAoubon9o1xuSQ8cx3VMnKf">**测试场景**：环境配置、用例数据、接口地址配置。</div><div class=" old-record-id-X9Q6dhUL1oiLBoxNwphc7edLnjh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-Fwtcd4Ajtof3h0xarzlcL6UznPg" data-type="divider">---

</div></div>## pickle 模块（Python 专属序列化）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E4%BD%9C%E7%94%A8%EF%BC%9A%E6%8A%8A%E4%BB%BB%E6%84%8F-python-%E5%AF%B9%E8%B1%A1%EF%BC%88%E5%88%97%E8%A1%A8%E3%80%81"><div class="ace-line ace-line old-record-id-EQ1MddDsuo0OxXxD4dOcAYqDnjd">**作用**：把**任意 Python 对象**（列表、字典、类、函数）转二进制存储，再还原。</div><div class="ace-line ace-line old-record-id-BDI9dWTQOoiLRGxPzJOcAZLdnsG">**特点**：只支持 Python，不能跨语言。</div><div class="ace-line ace-line old-record-id-OKHcdqP4XoWWCnx5GnrcxpfXnhf">**场景**：保存登录状态、缓存数据、对象持久化。</div><div class=" old-record-id-AFbLdzXybotoSvxCFcjcDFVqnZb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-AORkdTFnOovMlYxHBktcMU5Cnff" data-type="divider">---

</div></div>## csv /openpyxl 模块（数据驱动核心）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E4%BD%9C%E7%94%A8%EF%BC%9A%E8%AF%BB%E5%8F%96-excel%E3%80%81csv-%E6%96%87%E4%BB%B6-%E2%86%92"><div class="ace-line ace-line old-record-id-CWRGdcJoooYsNcxpXN7cCPBXn5c">**作用**：读取 Excel、CSV 文件 → 转列表 / 字典。</div><div class="ace-line ace-line old-record-id-Ze5SdqKFKovNTVxoY9qc1Q40nnc">**测试场景**：测试用例数据驱动、接口参数化。</div><div class=" old-record-id-Vvb6dcW0toQIpnxMO8cc4cKHnkc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-XdUAdAx3uobtVMxkRbxcigVPnLd" data-type="divider">---

</div></div>## base64 /hashlib 模块（加密 / 编码转换）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E4%BD%9C%E7%94%A8%EF%BC%9A%E5%AD%97%E7%AC%A6%E4%B8%B2-%E2%86%94-base64-%E5%AD%97%E7%AC%A6%E4%B8%B2-"><div class="ace-line ace-line old-record-id-LSgBd6s9doJpVsxfdj7crI91nZJ">**作用**：字符串 ↔ base64 字符串 ↔ 字节串 互转。</div><div class="ace-line ace-line old-record-id-PPMkdibudoCFWjxV6crcuZS9nrc">**场景**：接口加密、签名、图片转码。</div><div class=" old-record-id-PkttdoFsfo5s47xaa62cYlfFnbh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>## 总结

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E9%99%A4%E4%BA%86%E5%9F%BA%E7%A1%80%E7%9A%84-int-%28%29%E3%80%81str-%28%29-"><div class="ace-line ace-line old-record-id-PZjydby7PoOqPmxRfzGcgdIbnNd">除了基础的 int ()、str () 内置函数，真正工作和面试中高频的类型转换还有：</div>1. <div>**json 模块**：str 和 dict/list 互转（接口测试核心）</div>
2. <div>**literal\_eval**：字符串还原成原数据类型</div>
3. <div>**encode/decode**：字符串与字节串互转</div>
4. <div>**split/join**：字符串与列表互转</div>
5. <div>**yaml** → 读取配置</div>
6. <div>**openpyxl** → 数据驱动</div>
7. <div>**pickle/base64** → 缓存与加密</div>

<div class="ace-line ace-line old-record-id-IPZndYYInofbfzxuq1Hcn7rGnrd">这些都是做自动化、接口测试几乎每天都用的。本质是看你**有没有做过自动化框架、数据驱动、配置管理**。</div>5. # 如何将字典转换为列表或元组

<div class="ace-line ace-line old-record-id-MzzCdlUfkol5pTxbRW6cgARVnG4">在 Python 中，把字典转列表 / 元组，主要有**3 种目标形式**：</div></div>## 只转换 **键 (Key)**

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9"><div class=" old-record-id-K6ISdV5NJoamHPxehw5cKyYin6d" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>## 只转换 **值 (Value)**

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-1"><div class=" old-record-id-MQVsdN8wwovTo7x7cfJcZkDwnkc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>## 转换 **键值对 (整体)**

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-2"><div class=" old-record-id-B5UWd2kfQowGbHxAvgEca1a4nJf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-BMEPdrgVhoiCcIxDfwdcNm92nrg" data-type="divider">---

</div></div>## 面试大坑：直接强转

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%8D%83%E4%B8%87%E4%B8%8D%E8%A6%81%E7%9B%B4%E6%8E%A5%E7%94%A8-list-%28%E5%AD%97%E5%85%B8%29%EF%BC%81-%E6%9A%82"><div class="ace-line ace-line old-record-id-ODMSdlYW6og893xZxUYcSjDPnLd">**千万不要直接用 list (字典)！**</div><div class=" old-record-id-P2hUdgZNnoWpgqxhy8wcsLZknGc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-Uujfd62cMovGCTxwN67cR1dRnfb">**面试官必问**：直接转为什么只有键？**答**：因为字典遍历默认遍历的是**键 (Key)**。</div><div class=" old-record-id-X7Ued5sx4oRf1ZxtKfEcHfj9nMe" data-type="divider">---

</div></div>## 工作实际场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8F%90%E5%8F%96%E6%8E%A5%E5%8F%A3%E8%BF%94%E5%9B%9E%E5%AD%97%E6%AE%B5%E5%90%8D-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96">1. <div>**提取接口返回字段名**</div>

<div class=" old-record-id-XwbLdtbSJojWsNxQqsBceozFnXf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>1. <div>**数据驱动用例**</div>

<div class=" old-record-id-LDnwdaBCWoeWy7xTHrTchaoAnIe" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-TaMCdlWLromrsyxAQyMcztRNnAe" data-type="divider">---

</div></div>## 总结

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%AD%97%E5%85%B8%E8%BD%AC%E5%88%97%E8%A1%A8-%2F-%E5%85%83%E7%BB%84%EF%BC%8C%E8%AE%B0%E4%BD%8F%E4%B8%89%E4%B8%AA%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95%EF%BC%9A"><div class="ace-line ace-line old-record-id-ENmSdBJDToXcudxGlQ4cDOh4nIh">字典转列表 / 元组，记住**三个核心方法**：</div>1. <div>**keys()** —— 拿所有**键**</div>
2. <div>**values()** —— 拿所有**值**</div>
3. <div>**items()** —— 拿**键值对**直接强转 `list(字典)` 默认只拿键，这是面试高频坑点。</div>

6. # 数据类型转换可能会遇到哪些问题?如何解决

</div>## 字符串不是纯数字，转 int/float 直接报错

### 问题场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8E%A5%E5%8F%A3%E8%BF%94%E5%9B%9E-%22123a%22%E3%80%81%22null%22%E3%80%81%22">- <div>接口返回 `"123a"`、`"null"`、`""` 空字符串</div>
- <div>用 `int("123a")` 直接抛异常 `ValueError`</div>

</div>### 解决方法

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%85%88%E5%81%9A%E9%9D%9E%E7%A9%BA%E3%80%81%E6%A0%BC%E5%BC%8F%E6%A0%A1%E9%AA%8C%EF%BC%8C%E5%86%8D%E8%BD%AC%E6%8D%A2-%E7%94%A8-try-">1. <div>**先做非空、格式校验，再转换**</div>
2. <div>**用 try-except 捕获异常，避免用例直接中断**</div>
3. <div>对脏数据给默认值</div>

<div class=" old-record-id-N0wVdUY7cokJ1TxPKZ1cvAWcnty" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-EKDfdopw3oS7SyxwXeAczWlpn2f" data-type="divider">---

</div></div>## 单引号字典字符串，json.loads 解析失败

### 问题场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-excel-%2F-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%87%8C%E6%98%AF-%7B%27nam">- <div>Excel / 配置文件里是 `{'name':'test'}` 单引号格式</div>
- <div>`json.loads` 只认双引号，直接报错</div>

</div>### 解决方法

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E4%BC%98%E5%85%88%E4%BD%BF%E7%94%A8-ast.literal_eva">1. <div>**优先使用 ast.literal\_eval**（支持单引号、最安全）</div>
2. <div>或者替换单引号为双引号再用 json.loads</div>

<div class=" old-record-id-DzdvdxZ3FoYjBlxstD3ckanznGh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-AmtcdC5rqoY9yvxOTnzcz7V9nWd" data-type="divider">---

</div></div>## 空值 None、空字符串转数字 / 布尔值不符合预期

### 问题场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-int%28none%29-%E7%9B%B4%E6%8E%A5%E6%8A%A5%E9%94%99-bool%28">- <div>`int(None)` 直接报错</div>
- <div>`bool("False")` 结果是 True，因为非空字符串都为真</div>
- <div>接口返回 `null` 转数字失败</div>

</div>### 解决方法

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%85%88%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA-none-%2F-%E7%A9%BA%EF%BC%8C%E5%86%8D%E5%A4%84%E7%90%86-">1. <div>**先判断是否为 None / 空**，再处理</div>
2. <div>布尔值不要强转，直接判断字符串内容</div>

<div class=" old-record-id-B9ccdCblmo3VXlxgX0QcQT8Gnng" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-XSIxdBBvhoWdimxqSGHcmcWhnZd" data-type="divider">---

</div></div>## 集合、字典、列表直接转数字报错

### 问题场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-int%28%5B1%5D%29%E3%80%81int%28%7B-%22a%22%3A-">- <div>`int([1])`、`int({ "a": 1 })` 直接报错</div>
- <div>新手常误以为能自动提取里面的值</div>

</div>### 解决方法

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%85%88%E9%80%9A%E8%BF%87%E7%B4%A2%E5%BC%95%E3%80%81key-%E6%8A%8A%E7%9C%9F%E5%AE%9E%E5%80%BC%E5%8F%96%E5%87%BA%E6%9D%A5%EF%BC%8C%E5%86%8D%E8%BD%AC">1. <div>先通过索引、key 把**真实值取出来**，再转换</div>
2. <div>不要对容器类型直接强转数字</div>

<div class=" old-record-id-G7i5dqnGLovhQuxkbvxcIjbEnph" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-JbIhdhk2aoLj8Zxoikjcfe2CnOb" data-type="divider">---

</div></div>## 编码问题导致 str/bytes 转换乱码

### 问题场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-encode%2Fdecode-%E7%94%A8%E4%BA%86-gbk">- <div>`encode`/`decode` 用了 gbk、utf-8 不统一</div>
- <div>接口二进制、图片、加密串转字符串出现乱码</div>

</div>### 解决方法

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%BB%9F%E4%B8%80%E4%BD%BF%E7%94%A8-utf-8-%E6%8D%95%E8%8E%B7-unicod">1. <div>统一使用 **utf-8**</div>
2. <div>捕获 `UnicodeDecodeError`，设置忽略错误</div>

<div class=" old-record-id-KZWVdn1PnodspRxrIU1cVjgBnof" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-QUdLdnvg8oR1zuxkKtUcyNxhnCg" data-type="divider">---

</div><div class="ace-line ace-line old-record-id-MmHBdNx80oKZK6xVmOncHnGNnAe">为了避免类型转换出问题，我们在项目里一般会这么做：</div>1. <div>**所有转换都加 try-except**，不让脚本直接崩</div>
2. <div>**数据先校验再转换**：非空、格式、长度、范围</div>
3. <div>**优先用 ast.literal\_eval，少用 eval，标准 json 用 json 模块**</div>
4. <div>对接口返回做**字段类型断言**，提前发现问题</div>
5. <div>封装公共工具方法：str_to_int、str_to_dict 统一处理</div>

<div class=" old-record-id-BWLPdFI5KoXPbHxCdgBcOfT8nDd" data-type="divider">---

</div></div>## 结尾

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%9C%A8%E5%AE%9E%E9%99%85%E9%A1%B9%E7%9B%AE%E4%B8%AD%EF%BC%8C%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E4%B8%BB%E8%A6%81%E6%98%AF"><div class="ace-line ace-line old-record-id-NmpCd6pXvo5jp8x3PTxc1e4pn8c">在实际项目中，数据类型转换常见问题主要是：**格式不合法、单双引号不兼容、空值脏数据、编码乱码、容器直接强转**。解决思路就是：**先校验、再捕获异常、统一编码、使用安全的转换方法**，这样写出来的自动化脚本才稳定、不轻易报错。</div>7. # 如何对excel操作

<div class="ace-line ace-line old-record-id-O9xqdxD58omHOHxvpqpcrI2LnZK">Python 处理 Excel 主要用三个库：**xlrd/xlwt、openpyxl、pandas**，根据场景选择。</div></div>## 常用库与适用场景

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-xlrd-%2F-xlwt-%E8%AF%BB%E5%86%99-.xls-">1. <div>**xlrd / xlwt**</div>
    1. <div>读写 **.xls** 格式（Excel 97-2003）</div>
    2. <div>xlrd 新版只支持读，不支持写</div>
    3. <div>适合老旧格式文件</div>
2. <div>**openpyxl**</div>
    1. <div>读写 **.xlsx**（Excel 2007+）</div>
    2. <div>支持单元格样式、公式、图表、批注</div>
    3. <div>适合**精细化操作**（改格式、设置公式、逐单元格处理）</div>
3. <div>**pandas**</div>
    1. <div>基于 openpyxl/xlrd 封装</div>
    2. <div>读写速度快，适合**数据分析、批量处理**</div>
    3. <div>简单几行就能读写、筛选、汇总</div>
    4. <div>企业最常用</div>

<div class=" old-record-id-LLkxdqP8FoToOoxvbuacajprn6e" data-type="divider">---

</div></div>## 核心操作代码

### （1）pandas 读写（最常用）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-3"><div class=" old-record-id-DgwXdxKZ3o8yqfxVt6hcpNoOnQb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### （2）openpyxl 精细化操作

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-4"><div class=" old-record-id-TSIMdus3tojzmZxMVXPcCnMTnle" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-AL9PdTnqMopKDmxwn3Mc2XDFnlb" data-type="divider">---

</div></div>## 高频考点

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E8%AF%BB%E5%8F%96%E5%A4%9A%E4%B8%AA-sheet-pandas%EF%BC%9Ash">1. <div>**读取多个 sheet**</div>
    1. <div>pandas：`sheet_name=None` 返回字典</div>
    2. <div>openpyxl：`wb.sheetnames` 遍历</div>
2. <div>**筛选、过滤数据**pandas 直接条件筛选：</div>

<div class=" old-record-id-RwIjdbIg1oNOJFxaC7EcvXSDnAc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>1. <div>**合并、去重、空值处理**</div>

<div class=" old-record-id-QhBWdB8xGothrixuQ3DcHT6ZnTh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>1. <div>**设置样式、字体、颜色**用 openpyxl 设置 Font、PatternFill 等。</div>
2. <div>**大数据量处理**</div>
    1. <div>pandas 速度远快于逐行循环</div>
    2. <div>超大数据可用 `chunksize` 分块读取</div>

<div class=" old-record-id-DLTsdiEsIol2FRxIiUqcBZhOnEf" data-type="divider">---

</div></div>## 一句话总结

> <div class="ace-line ace-line old-record-id-M6Rud2WENotPKVxS2oacXyJqncn">简单数据分析、批量处理用 **pandas**；需要精细控制单元格、样式、公式用 **openpyxl**；老旧 .xls 文件用 **xlrd/xlwt**。</div>

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%B8%83%E5%B0%94%E5%80%BC%E5%8F%AF%E4%BB%A5%E8%BF%9B%E8%A1%8C%E5%93%AA%E4%BA%9B%E8%BF%90%E7%AE%97%EF%BC%9F-%E5%B8%83%E5%B0%94%E5%80%BC%EF%BC%88tru">8. # 布尔值可以进行哪些运算？

<div class="ace-line ace-line old-record-id-I9kpdcOJoo49Zdxrfyzc9OQVn1g">布尔值（True 和 False）主要用于逻辑判断，支持以下运算：</div>1. <div>**逻辑运算**</div>

<div class="ace-line text-indent ace-line old-record-id-K1YvdqwLio2MI1xEOhpc7gLDn4b">**与（and）**：两边都为 True 时结果才为 True，否则为 False例：True and True → True；True and False → False</div><div class="ace-line text-indent ace-line old-record-id-P5iqdBwuzocHPlxhAqHcAK7SnLe">**或（or）**：至少一边为 True 时结果为 True，否则为 False例：True or False → True；False or False → False</div><div class="ace-line text-indent ace-line old-record-id-XSSAdPXKwoIsHsxPpKTcTsu9nrg">**非（not）**：取反，not True → False，not False → True</div>2. <div>**比较运算**布尔值可与其他数据类型进行比较（True 等价于 1，False 等价于 0）：</div>

<div class="ace-line text-indent ace-line old-record-id-Tyg1dlcMJogUduxklgWcOWHCnAd">例：True == 1 → True；False &gt; 0 → False</div>3. <div>**数值运算（不推荐，但语法允许）**布尔值可参与加减等运算（本质是 1 和 0 的运算）：</div>

<div class="ace-line text-indent ace-line old-record-id-ZplHdbRgdo6tq0xIjasctXqnn2g">例：True + True → 2；False * 5 → 0</div>9. # 列表（list）、元组（tuple）、集合（set）和字典（dict）的区别

<div class="ace-line ace-line old-record-id-UzALdDR3qoAtBsx4e3Xc1iz9nlh">这四个是 Python 最核心的数据结构，我用**最直白、最好记**的方式给你讲清楚区别，看完就能直接用。</div></div>## 一句话总览

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-list%EF%BC%88%E5%88%97%E8%A1%A8%EF%BC%89%EF%BC%9A%E6%9C%89%E5%BA%8F%E3%80%81%E5%8F%AF%E6%94%B9%E3%80%81%E5%8F%AF%E9%87%8D%E5%A4%8D-t">- <div>**list（列表）**：有序、可改、可重复</div>
- <div>**tuple（元组）**：有序、**不可改**、可重复</div>
- <div>**set（集合）**：**无序**、可改、**不可重复**</div>
- <div>**dict（字典）**：键值对、键唯一、无序（3.7 + 有序）</div>

<div class=" old-record-id-TlvwdcqYNoykV9x6fYJcci0OnEc" data-type="divider">---

</div></div>## 详细对比

### list 列表 `[]`

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%86%99%E6%B3%95%EF%BC%9A%5B1%2C-2%2C-3%5D-%E6%9C%89%E5%BA%8F%EF%BC%9A%E6%9C%89%E7%B4%A2%E5%BC%95%EF%BC%8C">- <div>写法：`[1, 2, 3]`</div>
- <div>**有序**：有索引，能按位置取</div>
- <div>**可修改**：增删改查都行</div>
- <div>**可重复**</div>
- <div>用途：存一组有序数据，比如成绩、名单</div>

<div class=" old-record-id-J4iUd9tCyoWRQ2xOQotccErCnDf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-UXFQdxEyhoCjaDx3hplc801enLh" data-type="divider">---

</div></div>### tuple 元组 `()`

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%86%99%E6%B3%95%EF%BC%9A%281%2C-2%2C-3%29-%E6%9C%89%E5%BA%8F-%E4%B8%8D%E5%8F%AF%E4%BF%AE%E6%94%B9">- <div>写法：`(1, 2, 3)`</div>
- <div>**有序**</div>
- <div>**不可修改**（不能增删改）</div>
- <div>**可重复**</div>
- <div>用途：固定不变的数据，如配置、坐标</div>

<div class=" old-record-id-OXu1dIDnqozU6uxRKircKNNBnqh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-Ajn1dt5YLox2lYxAJd8cY8OSncg" data-type="divider">---

</div></div>### set 集合 `{}`

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%86%99%E6%B3%95%EF%BC%9A%7B1%2C2%2C3%7D-%E6%97%A0%E5%BA%8F%EF%BC%88%E6%B2%A1%E6%9C%89%E7%B4%A2%E5%BC%95%EF%BC%89-">- <div>写法：`{1,2,3}`</div>
- <div>**无序**（没有索引）</div>
- <div>**自动去重**</div>
- <div>可增删，但不能存重复值</div>
- <div>用途：去重、判断是否存在、交集并集</div>

<div class=" old-record-id-ZNt7dTyTEoCpJfxGRPbcKRQYnCh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-R615dRPOOo3FIYxV3ZZcdEQlnqf" data-type="divider">---

</div></div>### dict 字典 `{key:value}`

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%86%99%E6%B3%95%EF%BC%9A%7B%22name%22%3A%22%E5%BC%A0%E4%B8%89%22%2C-%22ag">- <div>写法：`{"name":"张三", "age":20}`</div>
- <div>**键值对结构**</div>
- <div>**键必须唯一**，重复会覆盖</div>
- <div>3.7 版本后有序，之前无序</div>
- <div>用途：存结构化信息，类似对象</div>

<div class=" old-record-id-KO0VdJKnFop5buxUhibcSFpdnrc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-Xd8zd1bkOoFliixSFBUca8wLn6b" data-type="divider">---

</div></div>## 一张表彻底记住

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E8%A1%A8%E6%A0%BC-%E8%BF%98%E5%9C%A8%E5%8A%A0%E8%BD%BD%E4%B8%AD%EF%BC%8C%E8%AF%B7%E7%AD%89%E5%BE%85%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%88%90%E5%90%8E%E5%86%8D%E5%B0%9D%E8%AF%95"><div class=" old-record-id-NvTRdbvr5oEvlQxyqRCcvJLAnlb" data-type="sheet">表格 还在加载中，请等待加载完成后再尝试复制</div></div>## 最简单使用场景口诀

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E8%A6%81%E6%9C%89%E5%BA%8F%E5%8F%AF%E6%94%B9-%E2%86%92-list-%E8%A6%81%E5%9B%BA%E5%AE%9A%E4%B8%8D%E5%8F%98-%E2%86%92">- <div>要**有序可改** → list</div>
- <div>要**固定不变** → tuple</div>
- <div>要**去重 / 快速查找** → set</div>
- <div>要**键值对存信息** → dict</div>

10. # 列表、元组、集合和字典的应用场景分别是什么

</div>## list 列表：最常用，日常 “万能容器”

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%89%B9%E7%82%B9%EF%BC%9A%E6%9C%89%E5%BA%8F%E3%80%81%E5%8F%AF%E4%BF%AE%E6%94%B9%E3%80%81%E5%8F%AF%E9%87%8D%E5%A4%8D%E4%B8%80%E5%8F%A5%E8%AF%9D%E5%9C%BA%E6%99%AF%EF%BC%9A%E9%9C%80"><div class="ace-line ace-line old-record-id-YfsQdHp1soCsiyxxt10c42jOnfd">**特点**：有序、可修改、可重复**一句话场景**：需要**按顺序存一堆东西，后面还要增删改**。</div><div class="ace-line ace-line old-record-id-YY18dSimmoe7cYxrMG3cfQPgnGh">你在测试里最常用：</div>- <div>存用例列表：`test_cases = ["登录", "退出", "查询"]`</div>
- <div>存接口参数组合：`params = [{"id":1}, {"id":2}]`</div>
- <div>存循环读取的数据：`user_list = []` 后面不断 append</div>
- <div>存日志、结果、截图路径</div>

<div class="ace-line ace-line old-record-id-AGfAdlbowonDXexN9tpctAaBnRf">**什么时候用 list？**</div></div>> <div class="ace-line ace-line old-record-id-WPqCdCPPYoj1D7xz6Kac0Ca1nmb">数据要**顺序不乱**，还要**随时增删改**。</div>

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-"><div class=" old-record-id-Ebg3dewq3ob1LExdX31ciVVOnTb" data-type="divider">---

</div></div>## tuple 元组：固定不变的 “安全包”

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%89%B9%E7%82%B9%EF%BC%9A%E6%9C%89%E5%BA%8F%E3%80%81%E4%B8%8D%E5%8F%AF%E4%BF%AE%E6%94%B9%E3%80%81%E5%8F%AF%E9%87%8D%E5%A4%8D%E4%B8%80%E5%8F%A5%E8%AF%9D%E5%9C%BA%E6%99%AF%EF%BC%9A"><div class="ace-line ace-line old-record-id-OLlAdSD7PotRBhxyhh5c8CXbnNb">**特点**：有序、**不可修改**、可重复**一句话场景**：数据**一旦确定就不能改**，防止误操作。</div><div class="ace-line ace-line old-record-id-BueEde7kLo1UoexBtl9cBNNZnFd">测试 / 开发常用：</div>- <div>配置项：`HOST = ("192.168.1.1", 8080)`</div>
- <div>固定枚举值：`STATUS = ("成功", "失败", "异常")`</div>
- <div>函数多返回值：`return code, msg` 本质就是元组</div>
- <div>作为字典的 key（list 不行，tuple 可以）</div>

<div class="ace-line ace-line old-record-id-UFQ5dGIfqoOQecxQ9DXc330lnjc">**什么时候用 tuple？**</div></div>> <div class="ace-line ace-line old-record-id-KV4odCGVwoQfkWxMV88cxhgknge">不想别人 / 自己手贱改了关键数据，用它最安全。</div>

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk--1"><div class=" old-record-id-IALDdFEHmoNZrwxQTymckoyen9f" data-type="divider">---

</div></div>## set 集合：去重 + 快速查找

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%89%B9%E7%82%B9%EF%BC%9A%E6%97%A0%E5%BA%8F%E3%80%81%E8%87%AA%E5%8A%A8%E5%8E%BB%E9%87%8D%E3%80%81%E6%9F%A5%E6%89%BE%E6%9E%81%E5%BF%AB%E4%B8%80%E5%8F%A5%E8%AF%9D%E5%9C%BA%E6%99%AF"><div class="ace-line ace-line old-record-id-ZkPwd2ALuoSXEmxw84XckmePndb">**特点**：无序、**自动去重**、查找极快**一句话场景**：**去重、判断是否存在、交集差集**。</div><div class="ace-line ace-line old-record-id-NhB4dib7PocLOux65pochASNnuc">测试里非常实用：</div>- <div>去掉重复数据：`user_ids = list(set(old_ids))`</div>
- <div>判断元素是否存在（比 list 快很多）：`if name in black_set:`</div>
- <div>对比两个列表差异：</div>
    - <div>只在 A 不在 B：`set(A) - set(B)`</div>
    - <div>共同数据：`set(A) & set(B)`</div>
- <div>存唯一标识：token、id、手机号去重</div>

<div class="ace-line ace-line old-record-id-RfQpdO18roBsCqxIalvcL7cBnGd">**什么时候用 set？**</div></div>> <div class="ace-line ace-line old-record-id-RZWydaJeuoJqIgxzHbicHkwxnrh">只要涉及**去重、快速判断存在、对比差异**，首选 set。</div>

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk--2"><div class=" old-record-id-HY6ZdVAptonTuxxbzlqcORQUn0b" data-type="divider">---

</div></div>## dict 字典：结构化数据，键值对

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%89%B9%E7%82%B9%EF%BC%9Akey-value-%E7%BB%93%E6%9E%84%E3%80%81key-"><div class="ace-line ace-line old-record-id-L9fYdJeisoZwtyxOOmMcyxeWnCd">**特点**：key-value 结构、key 唯一、可修改**一句话场景**：**一个对象有多个属性，用名字取数据**。</div><div class="ace-line ace-line old-record-id-NuXPddprIowQkzxf9HnciEGZnme">测试里几乎天天用：</div>- <div>接口请求参数：</div>

<div class=" old-record-id-HKmtdqJJPovmpWxWEyvciiyrnye" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div>- <div>接口返回结果解析</div>
- <div>用例信息：`case = {"id":1, "title":"登录", "expect":200}`</div>
- <div>配置字典、header、cookies</div>

<div class="ace-line ace-line old-record-id-Q7jXd3AgdoCVzoxAmZwciBUbnZg">**什么时候用 dict？**</div></div>> <div class="ace-line ace-line old-record-id-UxEDdy54XoGLFCxADkncv5J1nad">要描述**一个东西的多个属性**，不用下标，用名字取。</div>

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk--3"><div class=" old-record-id-PO2VdSEm7oL3sYx4RnucBQaKn2g" data-type="divider">---

</div></div>## 超级精简总结（适合记）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-list%EF%BC%9A%E9%A1%BA%E5%BA%8F%E5%AD%98%E6%94%BE%E3%80%81%E5%8F%AF%E4%BF%AE%E6%94%B9-%E2%86%92-%E5%AD%98%E5%88%97%E8%A1%A8%E3%80%81">- <div>**list**：顺序存放、可修改 → 存列表、用例、结果</div>
- <div>**tuple**：固定不变、防篡改 → 配置、固定参数</div>
- <div>**set**：去重、快速查找 → 去重、判存在、对比差异</div>
- <div>**dict**：键值对、结构化 → 接口参数、返回数据、对象信息</div>

11. # 列表的增删改查方法

<div class="ace-line ace-line old-record-id-IJGxdQi5coWUNVxFpSxcLw8Snhf">列表格式：`lst = [1, 2, 3, 4]`</div><div class=" old-record-id-JkrudzLxdobnO3xEVcDcPqWynjh" data-type="divider">---

</div></div>## 一、增（添加元素）

### append (元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%8A%A0%E5%88%B0%E6%9C%AB%E5%B0%BE-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9"><div class="ace-line ace-line old-record-id-T7fydpNl4oOeqmxfdMMcaGQpnIg">加到**末尾**</div><div class=" old-record-id-GMIhd8AVJoHeMsxAb3AcZFRGnYc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### insert (索引，元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8F%92%E5%88%B0%E6%8C%87%E5%AE%9A%E4%BD%8D%E7%BD%AE-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4"><div class="ace-line ace-line old-record-id-Xa4tdOfpjoQJTzxF9J8c80y5n8c">插到**指定位置**</div><div class=" old-record-id-KmiRd19haoqXv2xeBWic4XiTnNf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### extend (列表)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8A%8A%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%88%97%E8%A1%A8%E5%90%88%E5%B9%B6%E8%BF%9B%E6%9D%A5-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3"><div class="ace-line ace-line old-record-id-DC71dnmuFo7GylxizJ9cbb5pn1g">把另一个列表**合并进来**</div><div class=" old-record-id-B553dNAWCoVlUOxsTFXcrWzsnDh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 直接 +

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-5"><div class=" old-record-id-Y8i9dX1Keor7dTxhmT2cea5Vnzh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-Q1k1dGRDeoiAKfx43KmcO1JBnhc" data-type="divider">---

</div></div>## 二、删（删除元素）

### del 语句

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8C%89%E7%B4%A2%E5%BC%95%E5%88%A0-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9"><div class="ace-line ace-line old-record-id-MR2bdpx0SoZ6yxxR8kWcpA1Invg">按**索引**删</div><div class=" old-record-id-R31idVS2Jo9bEexcv6LcJCLtnug" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### pop (索引)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8C%89%E7%B4%A2%E5%BC%95%E5%88%A0%EF%BC%8C%E5%B9%B6%E8%BF%94%E5%9B%9E%E8%A2%AB%E5%88%A0%E5%85%83%E7%B4%A0-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6"><div class="ace-line ace-line old-record-id-DMc2dORiZovsB2xA2qscl2FNnxe">按索引删，并**返回被删元素**</div><div class=" old-record-id-G986d7ZipoaRrtxtBgMcq5aUnVf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-DI8Pdp3lMoMno4xMGc4cTG2Bnue">不写索引默认删最后一个：</div><div class=" old-record-id-EwJydbonPojBWTxuWkJcuTJ9nDe" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### remove (元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8C%89%E5%80%BC%E5%88%A0%EF%BC%88%E5%88%A0%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D%E7%9A%84%EF%BC%89-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6"><div class="ace-line ace-line old-record-id-ZhNOdcllKoVLDbxTUxVcoZpWnuR">按**值**删（删第一个匹配的）</div><div class=" old-record-id-H92tdY69JoSROOxOpAbcosFDnCf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### clear()

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%B8%85%E7%A9%BA%E5%88%97%E8%A1%A8-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9"><div class="ace-line ace-line old-record-id-OZo7dxsIoo1w0XxcAdycR9jznve">清空列表</div><div class=" old-record-id-OwdldJYvmoNj7KxC223cZk4snqd" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-PGSqdaGYRotiBux4M9scM6m9nAh" data-type="divider">---

</div></div>## 三、改（修改元素）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%9B%B4%E6%8E%A5%E9%80%9A%E8%BF%87%E7%B4%A2%E5%BC%95%E8%B5%8B%E5%80%BC-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95"><div class="ace-line ace-line old-record-id-ZIpEdvIxyoUTlexqtENcuNc5nyc">直接通过**索引赋值**</div><div class=" old-record-id-UqT0dui9io2Pr0xVqz3cZ3rkneh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-N9txdNAHJoYGzpxEx5EcH93knuN" data-type="divider">---

</div></div>## 四、查（查找、获取）

### 按索引取

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-6"><div class=" old-record-id-KzPMdyf6DoTHsexvp8uca1xOnCc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 切片取一段

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-7"><div class=" old-record-id-EeVndRABzolQefxhYXCclPKenSe" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### index (元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%89%BE%E5%85%83%E7%B4%A0%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%87%BA%E7%8E%B0%E7%9A%84%E7%B4%A2%E5%BC%95-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87"><div class="ace-line ace-line old-record-id-Q6H2dqiOroBqL7xZarxct6YQnig">找元素**第一次出现的索引**</div><div class=" old-record-id-Dwr7d6G37oltIaxGf0jcGQnxnXA" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### count (元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E7%BB%9F%E8%AE%A1%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4"><div class="ace-line ace-line old-record-id-EjqUdaGPVobmfOxyQpYc9iRan5e">统计出现次数</div><div class=" old-record-id-A741d75kno33SMxHmJpcfdRUn9l" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### in 判断是否存在

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-8"><div class=" old-record-id-Q0GOd0wNmoqty9xXNAtcJATCnbd" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-ZaiIdw1xgoZp7bxDPfTcjPh9nQb" data-type="divider">---

</div></div>## 五、常用其他方法

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%8E%92%E5%BA%8F%EF%BC%9Alst.sort%28%29-%E5%8F%8D%E8%BD%AC%EF%BC%9Alst">- <div>排序：`lst.sort()`</div>
- <div>反转：`lst.reverse()`</div>
- <div>长度：`len(lst)`</div>

<div class=" old-record-id-A1XldY1EDoVOStxC1bqcZcEQnnf" data-type="divider">---

</div></div>## 一句话速记

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%A2%9E%EF%BC%9Aappend-%2Finsert%2Fext">- <div>增：append /insert/extend</div>
- <div>删：del /pop/remove /clear</div>
- <div>改：直接索引赋值</div>
- <div>查：索引、切片、index、count、in</div>

12. # 字典的增删改查

<div class="ace-line ace-line old-record-id-ZnWDd67QSovl2LxwgWjce04lnEf">字典（dict）的增删改查非常简单，核心就是通过 **键（key）** 操作</div><div class="ace-line ace-line old-record-id-WIx5dXxqfooUAcx7TYTcCcmXnPh">示例字典：</div><div class=" old-record-id-DMiTdbQbooT8SixhTZec7aFInoP" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-IHB7dAYzyoq8BxxvDwlciVXOnGe" data-type="divider">---

</div></div>## 一、增（添加键值对）

### 1. 直接赋值（不存在就是新增）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-9"><div class=" old-record-id-XzRJdAZSRoCZBUxEtKccSPnnngb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 2. update() 批量添加/更新

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-10"><div class=" old-record-id-DGced4IHwo59uaxxZG5cNnSxn7b" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-ZfEPdwfFFoYUh9xaZWocMFJHnGA" data-type="divider">---

</div></div>## 二、删（删除键值对）

### 1. del 删除指定 key

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-11"><div class=" old-record-id-CAm4drPSWoewZ9xeC27c4Wtmnge" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 2. pop(key) 删除并返回值

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-12"><div class=" old-record-id-CexWdEARGoIaaLxcNeCcdTtfnne" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 3. popitem() 删除最后一对（Python3.7+）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-13"><div class=" old-record-id-XF1ndZgsboe5TbxCdZ9cjFAOnRf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 4. clear() 清空字典

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-14"><div class=" old-record-id-IZpTd9HxmoEUPOxsqAnczdB0n9c" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-FOWMd9acPoB9KqxJzYccQ8rrnSb" data-type="divider">---

</div></div>## 三、改（修改值）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E9%80%9A%E8%BF%87-key-%E7%9B%B4%E6%8E%A5%E8%B5%8B%E5%80%BC%EF%BC%88%E5%AD%98%E5%9C%A8%E5%B0%B1%E6%98%AF%E4%BF%AE%E6%94%B9%EF%BC%89-"><div class="ace-line ace-line old-record-id-TXxIdTjrDoQjDlxLfFPc5zvbnDh">**通过 key 直接赋值**（存在就是修改）</div><div class=" old-record-id-WyX6dO0FIo3mbuxMN6nccYvVnEd" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-AuOdd3WyDorgEkxk7Lxc996jnqo">批量修改用 `update()`：</div><div class=" old-record-id-K9QcdUetToKzcdxBD5OcL9Yun4f" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-Y9w0dJmgAos2g5xG2nycbNv0n4b" data-type="divider">---

</div></div>## 四、查（获取值）

### 1. 直接通过 key 获取（推荐）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-%E2%9A%A0%EF%B8%8F-%E7%BC%BA"><div class=" old-record-id-S3vRdl4E1oO7AExKI2bcriGZnKF" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class="ace-line ace-line old-record-id-BgIcdzh0xocRmDx5MnWcmspen4f">⚠️ 缺点：key 不存在会**报错**。</div></div>### 2. get() 安全获取（最常用）

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-15"><div class=" old-record-id-HIwId3I3eoIvnFxLJdVcaN0BnSg" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 3. 获取所有 key

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-16"><div class=" old-record-id-Cfx4d1Ha7ogfoXxKasmczcuJn8e" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 4. 获取所有 value

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-17"><div class=" old-record-id-OCIKdrxPwoW3qkxNtgZcr3PKnqh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 5. 获取所有键值对

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-18"><div class=" old-record-id-H6y0dnCwvoGV7MxUzy7c2xFUnwf" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 6. 判断 key 是否存在

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-19"><div class=" old-record-id-LlxodGzVPojFQ8xc1LtcLverndg" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-WgFudrI05oi3v2xSBTWcCInJn0b" data-type="divider">---

</div></div>## 一句话总结

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%A2%9E%EF%BC%9Adict%5Bkey%5D-%3D-%E5%80%BC-%2F-up">- <div>**增**：`dict[key] = 值` / `update()`</div>
- <div>**删**：`del` / `pop()` / `clear()`</div>
- <div>**改**：`dict[key] = 新值`</div>
- <div>**查**：`dict[key]` / `get()` / `keys/values/items`</div>

<div class="ace-line ace-line old-record-id-YHP1dvxVwon0jcxtiqNcUoMsnXc">**列表靠「位置下标」操作，字典靠「键名 key」操作**</div>13. # 集合的增删改查

<div class="ace-line ace-line old-record-id-FeTodf74vow32fxJuPRce4wCnpf">集合（set）最核心特点：**无序、无下标、元素不可重复、可哈希**</div><div class="ace-line ace-line old-record-id-VzNVd7GnfovAXzxYD9lcRaZCn9c">示例：</div><div class=" old-record-id-OvZpdMGQQo0G3mxNu52cY03qnzb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-YeUwdex9goosPvxWA37cMXYnnrd" data-type="divider">---

</div></div>## 一、增

### 1. add(元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%B7%BB%E5%8A%A0%E5%8D%95%E4%B8%AA%E5%85%83%E7%B4%A0-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4"><div class="ace-line ace-line old-record-id-Lxoads23ZoVmJDxtgOmc7pQonHf">添加单个元素</div><div class=" old-record-id-EByFdL1XPoYbnuxMMq1crrDynGh" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 2. update(可迭代对象)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%89%B9%E9%87%8F%E6%B7%BB%E5%8A%A0%EF%BC%88%E5%88%97%E8%A1%A8%E3%80%81%E5%85%83%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%83%BD%E8%A1%8C%EF%BC%89-%E6%9A%82%E6%97%B6"><div class="ace-line ace-line old-record-id-LZM6dAiAAojuqdxuVuncseFbn4f">批量添加（列表、元组、字符串都行）</div><div class=" old-record-id-TfIIdZHkqoArV9xQHybc9zWPnEb" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-P5u3dkNYsoXYtaxIatOcs5m2n9f" data-type="divider">---

</div></div>## 二、删

### 1. remove(元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%88%A0%E9%99%A4%E6%8C%87%E5%AE%9A%E5%85%83%E7%B4%A0%EF%BC%8C%E4%B8%8D%E5%AD%98%E5%9C%A8%E4%BC%9A%E6%8A%A5%E9%94%99-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E"><div class="ace-line ace-line old-record-id-Lnemd0TneoYTwqxc4jScAkSmneh">删除指定元素，**不存在会报错**</div><div class=" old-record-id-LV9RdjzcSoAwwwxy946csrzcn2d" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 2. discard(元素)

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E5%88%A0%E9%99%A4%E6%8C%87%E5%AE%9A%E5%85%83%E7%B4%A0%EF%BC%8C%E4%B8%8D%E5%AD%98%E5%9C%A8%E4%B8%8D%E6%8A%A5%E9%94%99%EF%BC%88%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%EF%BC%89-"><div class="ace-line ace-line old-record-id-GH4zdvKNJoru97x34Y6c2insnkc">删除指定元素，**不存在不报错**（推荐使用）</div><div class=" old-record-id-UdOCd2KYdo2mIJxPCSsc0FkOnDc" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 3. pop()

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E9%9A%8F%E6%9C%BA%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%EF%BC%8C%E5%B9%B6%E8%BF%94%E5%9B%9E%E5%AE%83-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E"><div class="ace-line ace-line old-record-id-POeddxrZloLR9TxTJwucqFUinHc">随机删除一个元素，并返回它</div><div class=" old-record-id-Ekhkd6WTuokJkSxACdHcP7KMnae" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>### 4. clear()

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%B8%85%E7%A9%BA%E9%9B%86%E5%90%88-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9"><div class="ace-line ace-line old-record-id-TxCJdGvJXo8LiAxMBHCcfYLJnnd">清空集合</div><div class=" old-record-id-N1jbdLVvvoA4tGxbAgWceRJPnOg" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div><div class=" old-record-id-JGLddz84MoIwyFxtLyDcUgvAnGQ" data-type="divider">---

</div></div>## 三、改

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E2%9A%A0%EF%B8%8F-%E9%9B%86%E5%90%88%E6%B2%A1%E6%9C%89-%E2%80%9C%E4%BF%AE%E6%94%B9%E2%80%9D-%E6%93%8D%E4%BD%9C-%E5%9B%A0%E4%B8%BA%EF%BC%9A-"><div class="ace-line ace-line old-record-id-P6igdUv02o7kcMxTBNfcq9eHnkf">⚠️ **集合没有 “修改” 操作**</div><div class="ace-line ace-line old-record-id-Jg42dSewFojESzxFqtWczYitnng">因为：</div>- <div>无序，没有下标</div>
- <div>元素不可变（不能改里面的值）</div>

<div class="ace-line ace-line old-record-id-RpVNdLGAKoIk9VxIcJecJ8c4nYf">真要改，只能：**先删旧的，再加新的**。</div><div class=" old-record-id-B87zdmMW6oei2vxhyWqcAla0n0b" data-type="divider">---

</div></div>## 四、查

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E9%9B%86%E5%90%88%E4%B8%8D%E8%83%BD%E9%80%9A%E8%BF%87%E4%B8%8B%E6%A0%87%2F%E7%B4%A2%E5%BC%95%E6%9F%A5%EF%BC%8C%E5%8F%AA%E8%83%BD%EF%BC%9A"><div class="ace-line ace-line old-record-id-K3ildrQnyoHyfaxT3s7cGHTUnwb">集合**不能通过下标/索引查**，只能：</div></div>### 1. 判断是否存在

<div data-docx-has-block-data="true" data-lark-html-role="root" data-page-id="WMc6dRRhZoSdTPx4NehcCpcVnee" id="bkmrk-%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E5%9C%A8%E9%A3%9E%E4%B9%A6%E6%96%87%E6%A1%A3%E5%A4%96%E5%B1%95%E7%A4%BA%E6%AD%A4%E5%86%85%E5%AE%B9-20"><div class=" old-record-id-F8L0dBvBsoWBGAxPKv3cY5bWnmC" data-type="fallback"><span class="block-paste-placeholder">暂时无法在飞书文档外展示此内容</span></div></div>