给出了一个列表,我想查看字典中所有元素的所有出现的索引。我正在寻找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]}
答案 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)