第 5 天|列表、字典与真题数据结构¶

日期: 2026 年 7 月 24 日
核心内容: 列表、字典、嵌套结构、for 遍历和 if 筛选

三套真题的数据结构基础:

  • HTML 表格最终转换为 DataFrame;
  • API JSON 常表现为嵌套字典和列表;
  • 多条商品记录常表示为“列表中放字典”。

列表:按顺序保存多个值¶

列表使用方括号 [],元素之间用英文逗号分隔。

product_names = ["双肩包", "拉杆箱", "帆布包"]

print(product_names[0])
print(product_names[1])
print(product_names[2])
双肩包
拉杆箱
帆布包

列表下标从 0 开始:

人的顺序 Python 下标
第 1 个 0
第 2 个 1
第 3 个 2

三个元素的合法下标是 0、1、2。访问下标 3 会触发 IndexError。

字典:用字段名保存一条记录¶

字典使用花括号 {},每个字段由“键: 值”组成。

product = {
    "品名": "双肩包",
    "销售数量": 125,
    "商城价格": 199.0,
}

print(product["品名"])
print(product["销售数量"])
print(product["商城价格"])
双肩包
125
199.0
概念 示例
键 "销售数量"
值 125
按键取值 product["销售数量"]
修改值 product["销售数量"] = 130

键名必须完全匹配。"销售数量"、"销量"、"销售数量 " 是三个不同的键。

列表中放字典:表示多条记录¶

products = [
    {"品名": "双肩包", "销售数量": 125, "商城价格": 199.0},
    {"品名": "帆布包", "销售数量": 80, "商城价格": 59.0},
]

print(products[0]["品名"])
print(products[1]["销售数量"])
双肩包
80

products[0]["品名"] 分两步:

  1. products[0] 取得第 1 条商品字典;
  2. ["品名"] 再从该字典取得品名。

名仕 API 的 res_data_02["data"]["list"] 也是逐层进入嵌套结构。

for 遍历每条商品记录¶

for product in products:
    total_sales = product["销售数量"] * product["商城价格"]
    print(f"{product['品名']}:{total_sales:.2f} 元")
双肩包:24875.00 元
帆布包:4720.00 元

for product in products: 的含义:

依次从 products 列表取出一条字典,把当前字典暂时命名为 product。

轮次 当前商品 计算
1 双肩包 125 × 199.0
2 帆布包 80 × 59.0

循环体必须缩进。循环外的代码只在循环结束后执行一次。

if 筛选销售数量大于 100¶

for product in products:
    if product["销售数量"] > 100:
        total_sales = product["销售数量"] * product["商城价格"]
        print(product["品名"], total_sales)
双肩包 24875.0

if 只允许条件为 True 的记录执行内部代码。

两级缩进分别表示:

  1. if 属于 for;
  2. 计算和输出属于 if。

科图题中的商品数量筛选、青娅题中的项目筛选,本质上都是根据条件保留记录。

与三套真题的关系¶

名仕¶

result["data"]["list"]
result["data"]["hasNextPage"]

考查嵌套字典、列表和分页布尔值。

科图、青娅¶

pd.read_html() 返回 DataFrame 列表,需要遍历和合并。

pandas¶

pd.DataFrame(products)

可以把“列表中的商品字典”转换成二维表格。

常见错误¶

错误 典型报错
列表下标越界 IndexError
字典键不存在 KeyError
使用错误层级取值 TypeError 或 KeyError
for 后漏冒号 SyntaxError
循环体未缩进 IndentationError
if 边界符号错误 结果数量不正确

综合练习¶

使用 学生练习.py 完成列表取值、字典取值,并根据商品数量计算销售总价。完成后尝试口头解释 products[0]["品名"] 的两层取值过程。

2026 暑期 Python 零基础训练|Notebook 课件 HTML 版