python - 在 Python 中查找列表中元素的索引

标签 python list

我有一个包含元素的列表,其中一些元素可以重复。例如,a = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]。我想找到所有这些元素的索引。输出应如下所示: 对于元素 1,索引为 [1, 5, 9]。对于元素 2,索引为 [2, 6, 10] 等...

有人可以告诉我该怎么做吗?请注意,代码应尽可能通用。

最佳答案

这是一个非常通用的方法:

>>> lst = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> dct = {x:[] for x in lst}
>>> for x,y in enumerate(lst, 1):
...     dct[y].append(x)
...
>>> dct
{1: [1, 5, 9], 2: [2, 6, 10], 3: [3, 7, 11], 4: [4, 8, 12]}
>>>

但是请注意,Python 索引从 0 开始,因此 1 的列表应该[0, 4, 8],2 的列表[1 , 5, 9] 等。但是,由于您希望索引为 +1,因此我将 enumerate 设置为从 1 开始。


上述解决方案使用纯 Python,没有任何导入。但是,如果您导入 collections.defaultdict,则可以提高性能:

>>> from collections import defaultdict
>>> dct = defaultdict(list)
>>> for x,y in enumerate(lst, 1):
...     dct[y].append(x)
...
>>> dct
{1: [1, 5, 9], 2: [2, 6, 10], 3: [3, 7, 11], 4: [4, 8, 12]}
>>>

关于python - 在 Python 中查找列表中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543704/

相关文章:

python - Django 1.8 错误的 PyDev 错误

python - Pandas:如何获取最大值和最小值并为每一行写入?

python - 在 Selenium 中迭代表非常慢

python - 有没有办法在 environment.yml 中具有特定于平台的依赖项?

javascript - 从数组的数组中删除重复值

python - 计算 GCD - 如何检查列表中的每个元素

r - 将数据框转换为命名向量

java - 根据特定属性组合两个对象列表

python - 在 python 中过滤包含一组字符串的数据帧行

python - 如何对位于两个缺失值之间的列表元素进行子集化?