2013-04-27 164 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 2013-04-27 14:34:58

回答

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