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

从SQL提取数据构建Python字典时列表值提取异常问题

解决同键多行数据合并为字典值列表的问题

你的核心问题是循环中每次遇到重复键都会覆盖字典值,导致仅保留最后一条记录的row[5]。要实现同键的row[5]合并为列表,需要在循环中判断键是否已存在,分情况初始化或追加数据:

修改后的代码

x = cursor_test.execute('''SELECT Next.team_home||"-"||Next.team_away,
                                    Next.championship, Next.date, Next.current_round, Next.clock,
                                    Results.score_home
                             FROM Next
                             INNER JOIN Results
                             ON Next.team_home = Results.team_home;''')

test = {}
for row in x.fetchall():
    key = row[0]
    # 提取固定不变的字段:row[1]到row[4]
    fixed_fields = row[1:5]
    current_score = row[5]
    
    if key not in test:
        # 首次遇到该键,初始化值:固定字段 + 空列表用于存score
        test[key] = list(fixed_fields) + [[]]
    
    # 将当前score追加到列表中
    test[key][4].append(current_score)

代码说明

  1. 每次循环先提取键key = row[0],以及固定字段fixed_fields(对应原需求的row[1]-row[4])和当前分数current_score(row[5])
  2. 若键不存在于字典中,初始化值为固定字段列表 + 空列表,确保固定字段只存储一次
  3. 若键已存在,直接将当前分数追加到对应位置的列表里

效果验证

针对你提供的示例行,最终test['Minnesota-Dallas']会生成:

['NHL', 8.1, 9, '15:00', [0, 1, 1, 5]]

完全符合预期结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:41:19