查找元素的索引

时间:2013-04-27 14:31:49

标签: python list

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

1 个答案:

答案 0 :(得分: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])]