深圳融克迪特科技有限公司 Logo,金融科技,量化交易,软件开发

深圳融克迪特科技有限公司

RONG CREDIT TECHNOLOGY CO., LTD.

基础入门

【Python 系列 第2讲】列表和字典:装下价格与日期

本讲用列表装下一组收盘价、用字典保存单日行情快照,再把多日记录组织成可继续遍历的小样本,帮助初学者在真正开始循环和收益率计算前,先把价格与日期放进清楚、稳定的数据结构里。

2026-04-26 智铨研究 阅读时长 7 分钟

目录

  1. 本节目标
  2. 为什么第 2 讲先练“列表和字典”
  3. 沿用第 1 讲已经能运行的 Python 环境
  4. 四步把价格和日期装进合适的数据结构
  5. 先用列表装下一组价格
  6. 再用另一个列表装日期
  7. 用字典保存一日行情快照
  8. 把多日小字典放进列表里
  9. 怎样判断你真的把数据装对了
  10. 价格列表长度正确
  11. 日期列表长度和价格列表一致
  12. 字典里能按键取出值
  13. 多日记录里第一条数据可读
  14. 什么时候该用列表,什么时候该用字典
  15. 价格为什么先放列表,不直接全放字典
  16. 单天记录为什么更适合用字典
  17. 列表和字典会不会很快不够用
  18. 如果日期和价格长度不一致怎么办
  19. 哪些情况仍然算本讲完成
  20. 写一个最小价格记录构造器
  21. 第 2 讲是在建立“数据容器”意识
  22. 完成标准
  23. 系列衔接
  24. 风险揭示与免责声明

Python · 入门短课

  1. 第 1 讲【Python 系列 第1讲】Python环境检查:先打印一组收盘价
  2. 第 2 讲【Python 系列 第2讲】列表和字典:装下价格与日期
  3. 第 3 讲【Python 系列 第3讲】for循环:批量计算日收益率
  4. 第 4 讲【Python 系列 第4讲】函数封装:写一个收益率计算器
  5. 第 5 讲【Python 系列 第5讲】条件判断:筛出上涨交易日
  6. 第 6 讲【Python 系列 第6讲】CSV读写:保存再读回价格表
  7. 第 7 讲【Python 系列 第7讲】异常处理:避开空值和除零
  8. 第 8 讲【Python 系列 第8讲】生成一份行情摘要

【Python 系列 第2讲】列表和字典:装下价格与日期

1. 本节目标

第 2 讲开始把第 1 讲里那组单独打印的收盘价,整理成更像“数据”的样子。目标很直接:学会用列表装下一组价格,再用字典把日期和价格配起来。只要这一步走通,后面写循环、算收益率、做筛选时,你就不再是在几行零散数字上硬算,而是在一份有结构的小样本上继续推进。

学完这一讲后,你可以直接完成下面几件事:

  1. 用列表保存一组连续价格。
  2. 用字典把日期和价格对应起来。
  3. 明确什么场景该先用列表,什么场景该先用字典。

这就是 Python 入门里非常关键的一步:先把数据装稳,再谈后面的计算。

2. 为什么第 2 讲先练“列表和字典”

很多初学者一上来就想直接算收益率、做条件判断,结果很快会碰到一个更基础的问题:这些价格和日期到底放在哪里。如果你总是把数字散在几行变量里,后面每加一个步骤,代码都会更乱。相反,只要先把数据放进合适的容器里,后面很多动作都会自然很多。

第 2 讲之所以先练列表和字典,就是因为它们几乎覆盖了入门阶段最常见的两类需求:

  1. 只关心一串值的顺序时,用列表最省力。
  2. 需要给每个值配一个名字或键时,用字典更清楚。

量化练习里,收盘价序列、交易日列表、单日行情快照,基本都可以先落在这两类结构上。把这一步做扎实,后面才谈得上“批量处理”。

3. 沿用第 1 讲已经能运行的 Python 环境

本讲不需要任何第三方库,继续使用第 1 讲已经确认可运行的标准 Python 即可。你只需要新建一个文件,比如 lesson2_containers.py,然后把下面的示例代码敲进去。

为了让输出更容易验证,本讲继续沿用一组很小的样本:

dates = ['2024-01-01', '2024-01-02', '2024-01-03']
prices = [12.34, 12.80, 12.65]

这组数据故意保持很短,因为当前重点不是数据量,而是先把结构关系看清楚。

4. 四步把价格和日期装进合适的数据结构

下面四步分别解决“先放值”“再放键”“最后检查结构”的问题。顺着这个顺序做,最不容易混乱。

5. 先用列表装下一组价格

prices = [12.34, 12.80, 12.65]
print(prices)
print(type(prices))

列表最适合装这种有顺序的一串值。你会发现,价格放进列表以后,后面不管是遍历、取第一个值,还是计算相邻两天变化,都会容易很多。

6. 再用另一个列表装日期

dates = ['2024-01-01', '2024-01-02', '2024-01-03']
print(dates)

这里先不要急着把日期和价格揉成一个复杂结构。先分别放好,目的是让你明确看到:一边是时间,一边是数值,二者长度应该一致。

7. 用字典保存一日行情快照

day_record = {
    'date': '2024-01-01',
    'close': 12.34,
    'code': '000001.SZ'
}

print(day_record)
print(day_record['date'])
print(day_record['close'])

字典和列表最大的区别,是它更适合保存“有字段名”的信息。对于单日记录、单次信号结果、一个小配置项,字典往往比列表更清楚,因为你能直接按键去取值。

8. 把多日小字典放进列表里

records = [
    {'date': '2024-01-01', 'close': 12.34},
    {'date': '2024-01-02', 'close': 12.80},
    {'date': '2024-01-03', 'close': 12.65},
]

print(records)
print(records[0])
print(records[0]['close'])

到了这一步,你已经从“单个值”走到了“一组有结构的样本”。后面如果要批量算收益率、筛上涨日、生成摘要,这类“列表里装字典”的形式会非常常见。

9. 怎样判断你真的把数据装对了

这一步不需要复杂测试,只要把最关键的结构关系检查清楚即可。

10. 价格列表长度正确

assert len(prices) == 3

11. 日期列表长度和价格列表一致

assert len(dates) == len(prices)

12. 字典里能按键取出值

assert day_record['date'] == '2024-01-01'
assert day_record['close'] == 12.34

13. 多日记录里第一条数据可读

assert records[0]['close'] == 12.34
assert records[1]['date'] == '2024-01-02'

只要这四条都成立,就说明你已经能把最小行情样本装进后面可继续使用的结构里了。

14. 什么时候该用列表,什么时候该用字典

这是第 2 讲最容易混淆的地方,先分清楚会省很多时间。

15. 价格为什么先放列表,不直接全放字典

因为单独的一串收盘价最重要的信息其实是顺序。列表天然适合保存顺序,后面取前后两天价格也最直接。

16. 单天记录为什么更适合用字典

因为单天记录里通常不止一个值。除了价格,后面你还可能放日期、代码、成交量。字典可以让这些字段名一眼看清。

17. 列表和字典会不会很快不够用

入门阶段完全够用。后面等你开始用 csv、函数封装或 pandas,你会在这些结构上自然升级,而不是从零重来。

18. 如果日期和价格长度不一致怎么办

那就先不要往下做。长度不一致说明数据本身已经错位,后面不管怎么循环或计算,结果都会不可靠。

19. 哪些情况仍然算本讲完成

  1. 你不一定非要用三天样本,四天或五天也可以,只要结构清楚。
  2. 日期字符串是否带交易所时区不重要,本讲先只练最基础的字符串日期。
  3. 字典里是否额外放 openhighlow 都可以,但核心是先理解键值关系。
  4. 当前不要求把列表和字典互相自动转换,手工写出小样本就足够。

20. 写一个最小价格记录构造器

def make_price_record(date, close, code):
    return {
        'date': date,
        'close': close,
        'code': code,
    }

record = make_price_record('2024-01-01', 12.34, '000001.SZ')
print(record)

这类小函数很适合帮助你把“字典长什么样”固定下来。后面数据变多时,结构也不容易写乱。

21. 第 2 讲是在建立“数据容器”意识

很多人学 Python 时,会把列表和字典当成语法点去背。对量化入门来说,更重要的是把它们当作“容器选择”。也就是说,你每次拿到一段小数据,都要先想:

  1. 我现在更需要顺序,还是更需要字段名?
  2. 我现在处理的是单条记录,还是多条样本?
  3. 我后面是要批量遍历,还是按字段直接取值?

只要这三个问题越来越清楚,你写出来的 Python 代码就会比“只会拼语法”稳很多。

22. 完成标准

如果你现在已经能用列表装下一组价格、用字典保存单日记录、并且知道为什么“多条字典放进列表里”是一种很常见的组织方式,那第 2 讲就算完成。

23. 系列衔接

本讲是《Python量化入门短课》的第 2/8 讲,当前主题是《列表和字典:装下价格与日期》。

上一讲:第 1 讲《Python环境检查:先打印一组收盘价》。

下一讲:第 3 讲《for循环:批量计算日收益率》。

后续安排:第 4 讲《函数封装:写一个收益率计算器》;第 5 讲《条件判断:筛出上涨交易日》。

24. 风险揭示与免责声明

风险揭示与免责声明

本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。

本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。

市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。

读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。