2013-04-27 131 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])]