2013-04-27 4 views
2
this = '['123','231','34','123','34','123']' 
dups = collections.defaultdict(list) 
for i, item in enumerate(this): 
    for j, orig in enumerate(seen): 
     if item == orig: 
     dups[j].append(i) 
     break 

    else: 
     seen.append(item) 

나는이 코드를 가지고 있습니다. 내가 원하는 것은 각 요소의 색인을 인쇄하여 형태로 표현하는 것입니다. [('123',[0,3,5]),('231',[1]),('34',[2,4])] 그러나 내 코드는 [('123',[3,5]),('34',[4])]입니다. 어쨌든 배열의 형식을 변경하지 않고 원하는 결과를 얻을 수 있도록 코드를 편집 할 수 있습니까? 그래서 출력은 다음과 같이 [('123',[0,3,5]),('231',[1]),('34',[2,4])]엘리먼트 인덱스 찾기

+0

234 '이'목록에없는 당신은 당신의 목록 주위에 ''이 – Yoriz

답변

3

뭔가로 남아있을 것입니다 :

In [35]: lis=['123','231','34','123','34','123'] 

In [36]: from collections import defaultdict 

In [37]: dic=defaultdict(list) 

In [38]: for i,x in enumerate(lis): 
    ....:  dic[x].append(i) 
    ....:  

In [40]: dic.items() 
Out[40]: [('123', [0, 3, 5]), ('231', [1]), ('34', [2, 4])]