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

Python字典为何未保留重复键的键值对?问题咨询

为什么Python字典无法保留重复键的多个值?

先看你给出的代码:

capacity =  [10,2,2]
rocks = [2,2,0]
a=100
bags= {c:r for (c,r) in zip(capacity,rocks)}
print(bags)

# 输出结果:
# {10: 2, 2: 0}

问题的核心原因是:Python字典的键具有唯一性。当你用字典推导式创建字典时,如果遇到重复的键,后出现的键值对会直接覆盖之前的。

在你的例子里,capacity列表中有两个2,对应的键值对分别是(2, 2)和(2, 0)。当字典推导式处理到第二个2时,会把第一个2对应的2替换成0,所以最终字典里只保留了最后一次出现的键值对2: 0。

如果你需要为同一个键存储多个值,不能直接用普通字典,而是需要把值设为列表类型,比如可以这样实现:

方法1:用普通字典手动处理

capacity = [10,2,2]
rocks = [2,2,0]
bags = {}
for c, r in zip(capacity, rocks):
    # 键已存在就追加值到列表,不存在则创建新列表
    if c in bags:
        bags[c].append(r)
    else:
        bags[c] = [r]
print(bags)
# 输出:{10: [2], 2: [2, 0]}

方法2:用collections.defaultdict简化代码

from collections import defaultdict

capacity = [10,2,2]
rocks = [2,2,0]
bags = defaultdict(list)
for c, r in zip(capacity, rocks):
    bags[c].append(r)
# 转换为普通字典输出
print(dict(bags))
# 输出:{10: [2], 2: [2, 0]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:56