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
相关产品推荐
相关产品推荐

