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

如何更新扩展Python字典键且不覆盖、不重复现有值?

问题根因

  1. extend方法导致重复:该方法会直接将新列表所有元素追加到已有列表末尾,无内置去重逻辑,多次添加相同页码就会产生大量重复值。
  2. update方法报错+逻辑错误:代码中page_dict()属于语法错误,字典是容器不是可调用函数,加括号会触发类型错误;且update方法会直接用新值覆盖对应键的原有值,完全不符合合并需求。

解决方案

根据是否需要保留页码排序/原有顺序,可选择以下两种实现:

方案1:输出升序页码(适合书籍索引场景,效率更高)

利用集合自动去重,再转为列表排序,符合常规书籍索引的页码排列习惯:

# 检查新键是否存在
if nw in page_dict:
    # 合并两个列表后去重、升序排列
    merged = list(set(page_dict[nw] + page_list))
    merged.sort()
    page_dict[nw] = merged
else:
    # 新键直接赋值并排序
    page_dict[nw] = sorted(page_list)

方案2:保留页码原有出现顺序

如果需要严格保留页码第一次出现的顺序,不做排序,可遍历新页码逐个判断添加:

if nw in page_dict:
    for page_num in page_list:
        # 仅添加不存在的页码,避免重复
        if page_num not in page_dict[nw]:
            page_dict[nw].append(page_num)
else:
    page_dict[nw] = page_list.copy()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:45:02