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

Python字典如何给键追加值不覆盖原有值及相关代码问题排查

Python字典相同键追加值不覆盖原有值的解决方案

原代码问题分析

  • 直接执行diction[season[w]] = shows[w]会直接覆盖已有键的旧值,无法保留历史值
  • 全局共用同一个temp_list,且判断逻辑仅针对键'20',只要'20'存在就把所有遍历到的节目都追加进去,导致混入了其他季节的节目
  • 没有对所有重复键做通用处理,逻辑扩展性差

修改后代码

diction = {}

# 用with上下文管理器读取文件,自动关闭资源
with open('file1.txt', 'r') as f:
    lines = [line.strip('\n') for line in f.readlines()]

# 按步长2拆分季节和节目列表
season = lines[::2]
shows = lines[1::2]

for s, show in zip(season, shows):
    if s not in diction:
        # 键不存在时直接存单个字符串
        diction[s] = show
    else:
        # 键已存在时,先把原来的值转成列表(如果还不是列表),再追加新值
        if not isinstance(diction[s], list):
            diction[s] = [diction[s]]
        diction[s].append(show)

print(diction)

运行结果

{'20': ['Gunsmoke', 'Law & Order'], '30': 'The Simpsons', '10': 'Will & Grace', '14': 'Dallas', '12': 'Murder, She Wrote'}

注:你给出的期望输出存在语法错误,字典的值不能直接写两个逗号分隔的字符串,实际期望应为'20'对应的value是包含两个节目的列表,上述结果和你期望的内容完全匹配,仅修正了语法格式。另外你期望输出里的Will & Grade为笔误,原文件内容为Will & Grace。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:04