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

Python遍历循环修改字典值时赋值错误问题求助

问题分析与解决

错误原因

你的代码逻辑存在核心问题:外层循环每处理一个年份i,内层又完整遍历了一遍lines列表,每次都用当前的j覆盖years[i]的值。这就导致每个年份的最终值都会被lines的最后一个元素覆盖,自然所有年份对应的值都变成了最后一支球队。另外years.update({i:i})这行完全多余,后续赋值会直接覆盖它。

修正方案

要实现年份与lines元素一一对应,需要先生成有效年份列表(排除1904、1994),再将其与lines的元素配对赋值,避免嵌套循环的覆盖问题。

修正后的代码:

lines = a.readlines()
# 清理每行末尾的换行符,避免值中带多余的换行
lines = [line.strip() for line in lines]

# 生成1903-2021之间的有效年份(排除1904和1994)
valid_years = []
for year in range(1903, 2022):
    if year not in (1904, 1994):
        valid_years.append(year)

# 配对年份与球队,构建字典
years = {}
for year, team in zip(valid_years, lines):
    years[year] = team

# 也可以用更简洁的字典推导式
# years = {year: team for year, team in zip(valid_years, lines)}

说明

  1. 先处理lines的换行符:readlines()会保留每行末尾的\n,用strip()可以去掉这些多余字符。
  2. 生成有效年份列表:确保年份数量和lines的元素数量完全匹配(对应每一届世界大赛的冠军)。
  3. 用zip()配对:将有效年份和球队一一对应,每个年份只会被赋值一次,彻底避免覆盖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:30:49