所有元素所有出现的索引

时间:2018-07-21 20:41:48

标签: python list

给出了一个列表,我想查看字典中所有元素的所有出现的索引。我正在寻找Q编程语言提供的函数group的Python实现。我期望比下面的代码更简单的解决方案

l=[2, 1, 1, 7, 2]

d={}
for e, v in enumerate(l):
    if v in d.keys():
        d[v].append(e)
    else:
        d[v]= [e]

print(d)

{2: [0, 4], 1:[1, 2], 7: [3]}

1 个答案:

答案 0 :(得分:3)

您可以使用defaultdict来简化代码,但除此之外,还可以:

from collections import defaultdict

d = defaultdict(list)
for i, x in enumerate(l):
    d[x].append(i)

或者,您可以使用setdefault方法访问dict值:

d = {}
for i, x in enumerate(l):
    d.setdefault(x, []).append(i)