我有一个像[1,2,3,1,2,3,1,2,3]
这样的列表,我希望按照索引对公共元素进行分组,结果如下:[(0,3,6),(1,4,7),...]
答案 0 :(得分:2)
使用字典; collections.defaultdict()
最简单:
from collections import defaultdict
indices = defaultdict(list)
for index, value in enumerate(inputlist):
indices[value].append(index)
result = [tuple(indices[value]) for value in sorted(indices)]
这假设您希望按值排序顺序排序索引。
答案 1 :(得分:1)
如果订单有问题,请使用collections.OrderedDict
,否则请转到collections.defaultdict
:
>>> from collections import OrderedDict
>>> lis = [1,2,3,1,2,3,1,2,3]
>>> d = OrderedDict()
>>> for i, item in enumerate(lis):
d.setdefault(item, []).append(i)
...
>>> d.values()
[[0, 3, 6], [1, 4, 7], [2, 5, 8]]