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

Python使用字典存储列表重复元素索引时出现值覆盖问题如何解决

Python字典存储重复元素索引的解决方案

核心原因

Python 字典要求键必须唯一,重复声明同一个键时,后声明的值会自动覆盖之前的值,你期望的{1:0,1:1,3:2,2:3,2:4}格式本身不符合Python字典的语法规则,无法直接实现。

推荐实现方案

方案1:字典存储索引列表

将每个元素作为键,对应的值改为存储所有匹配索引的列表,可完整保留所有位置信息:

arr = [1, 1, 3, 2, 2]
index_map = {}
for idx, num in enumerate(arr):
    # 元素首次出现时初始化空列表
    if num not in index_map:
        index_map[num] = []
    # 追加当前索引
    index_map[num].append(idx)

print(index_map)

运行输出:
{1: [0, 1], 3: [2], 2: [3, 4]}
后续需要取用某个元素的所有索引时,直接访问对应键的列表即可。

方案2:元组列表存储所有对应关系

如果需要严格保留「单元素对单索引」的键值对应结构,可以使用元组列表实现:

arr = [1, 1, 3, 2, 2]
result = [(num, idx) for idx, num in enumerate(arr)]
print(result)

运行输出:
[(1, 0), (1, 1), (3, 2), (2, 3), (2, 4)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:48:03