我有一个包含元素的列表,其中一些元素可以重复。例如,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/