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

匹配列表与表格列值:为Excel首列各元素生成对应次列值列表

原表格示意图:
表格示意图

错误原因

你得到空列表的核心问题出在第二部分代码的判断条件:
你写的是if ws11.cell(row=j, column=1).column == values[i-1]:,这里的.column属性返回的是单元格的列序号,这里你固定取的是第一列,所以该值永远为1,只有当你第一列的元素刚好是数字1时才可能匹配成功,其余情况判断永远不成立,自然不会有元素被追加到列表中。同时你现有逻辑会把所有匹配到的值都存在同一个一维列表里,无法区分不同第一列元素对应的结果。

修正方案

1. 基于你原有逻辑修正

把判断条件中的.column改为.value即可,同时调整为字典存储结果,更符合你要的「第一列元素对应第二列值列表」的需求:

# 提取第一列唯一值的逻辑可保留
values = []
for i in range(2, ws11.max_row+1):
    cell_val = ws11.cell(row=i, column=1).value
    if cell_val not in values:
        values.append(cell_val)
print(values)

# 修正后生成对应映射关系
result = {}
for key in values:
    result[key] = []
    for j in range(2, ws11.max_row+1):
        # 这里将.column改为.value,同时注意两边值的类型要匹配
        if ws11.cell(row=j, column=1).value == key:
            result[key].append(ws11.cell(row=j, column=2).value)
print(result)

2. 更高效的简化写法

无需单独遍历一遍提取唯一值,只需要遍历一次表格即可生成结果,性能更好:

result = {}
for i in range(2, ws11.max_row+1):
    key = ws11.cell(row=i, column=1).value
    val = ws11.cell(row=i, column=2).value
    if key not in result:
        result[key] = []
    result[key].append(val)
print(result)

运行后result中就会存储你需要的结构,比如result[1]就会返回['a','g'],result[2]返回['r','t']。

内容的提问来源于stack exchange,提问作者Iuli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:54:04