You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xlrd读取Excel转字典,更换列索引后仅得一条数据的原因咨询

问题原因分析与解决办法

这事儿的核心原因其实很简单——Python字典的键是唯一的,重复的键会被后续的赋值直接覆盖掉。

咱们来拆解下你的场景:
你的Excel第0列(Reference列)的所有行值都是完全一样的:I_N_Glaspole_Allergy_2005,xlrd读取后会把下划线转成空格,变成I N Glaspole Allergy 2005。当你循环每一行时:

  • 第一次循环(第1行数据):给键I N Glaspole Allergy 2005赋值221.0
  • 第二次循环(第2行):用同一个键赋值920.0,直接覆盖了之前的221.0
  • 第三次循环:再覆盖成921.0
  • 第四次循环:最终覆盖成922.0

所以循环结束后,字典里自然就只剩最后一次赋值的结果了。

如果需要保留所有对应的数据

要是你想把同一个Reference对应的所有IEB ID都存下来,可以把字典的值改成列表,每次循环时往列表里追加数据,代码可以改成这样:

import xlrd
iedb = {} 
book = xlrd.open_workbook('sampledata.xlsx')
sh = book.sheet_by_index(0)
for i in range(1, sh.nrows):
    ref_key = sh.cell_value(rowx=i, colx=0)
    ieb_id = sh.cell_value(rowx=i, colx=1)
    # 如果键不存在,先初始化一个空列表
    if ref_key not in iedb:
        iedb[ref_key] = []
    iedb[ref_key].append(ieb_id)

运行后你会得到这样的结果:

{'I N Glaspole Allergy 2005': [221.0, 920.0, 921.0, 922.0]}

内容的提问来源于stack exchange,提问作者Dr. Arpan Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:21:44