按索引将元素列表元组转换为元组

时间:2013-11-26 17:02:26

标签: python list tuples

我有一个像[1,2,3,1,2,3,1,2,3]这样的列表,我希望按照索引对公共元素进行分组,结果如下:[(0,3,6),(1,4,7),...]

2 个答案:

答案 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]]