2013-11-26 4 views

ответ

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]] 
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)] 

Это предполагает, что вы хотели индексы упорядоченных по порядку значения сортировки.

Смежные вопросы