python统计重复数字的下标

python统计重复数字的下标

作者:Joshua Lee发布时间:2026-03-28 23:49阅读时长:14 分钟阅读次数:10
常见问答
Q
如何使用Python查找列表中重复数字的所有下标?

我有一个包含数字的列表,想找出其中重复数字的所有出现位置,该怎么用Python实现?

A

利用字典存储数字及其下标实现重复数字下标统计

可以遍历列表,将数字作为键,下标作为值存入字典的列表中。这样每个数字对应一个下标列表,重复数字的下标列表长度会大于1。示例代码:

nums = [2, 3, 5, 2, 3, 8]
index_map = {}
for i, num in enumerate(nums):
    index_map.setdefault(num, []).append(i)

# 找出重复数字及其下标
repeats = {num: idxs for num, idxs in index_map.items() if len(idxs) > 1}
print(repeats)

结果会显示所有重复数字及它们对应的下标数组。

Q
如何快速统计Python列表中每个数字出现的下标?

假设列表中数字很多,我想快速获得每个数字对应的所有出现位置,有没有简洁的方法?

A

使用collections模块的defaultdict简化下标收集过程

利用collections.defaultdict可以自动初始化列表,避免判断键是否存在。示范代码如下:

from collections import defaultdict

nums = [1, 4, 2, 4, 3, 1]
index_map = defaultdict(list)
for i, num in enumerate(nums):
    index_map[num].append(i)

print(dict(index_map))

这条方法省去了检查键是否存在的步骤,有效提高代码简洁度和执行效率。

Q
怎样用Python找出列表中所有重复数字对应的下标位置?

我想知道列表中哪些数字出现不止一次,并且得到它们所有下标位置的集合,应该怎么操作?

A

筛选出现次数大于一的数字及对应下标

统计所有数字的下标列表后,筛选出长度超过1的条目即为重复数字。具体做法如下:

nums = [7, 9, 7, 2, 9, 5, 2]
index_map = {}
for i, n in enumerate(nums):
    index_map.setdefault(n, []).append(i)

duplicates = {k: v for k, v in index_map.items() if len(v) > 1}
print(duplicates)

输出结果包含出现多次的数字及其所有下标,便于进一步处理和分析。