Iain King wrote: > William Meyer wrote: > > hi, > > > > I need to get the index of an object in a list. I know that no two > > objects > > in the list are the same, but objects might evaluate as equal. for example > > > > list = [obj1, obj2, obj3, obj4, obj5] > > for object in list: > > objectIndex = list.index(object) > > print objectIndex > > > > prints 0, 1, 2, 3, 2 instead of 0, 1, 2, 3, 4 because obj3 == obj5. I could > > loop > > through the list a second time comparing id()'s > > > > for object in list: > > objectIndex = 0 > > for i in list: > > if id(object) == id(i): > > break > > objectIndex += 1 > > print objectIndex > > > > but that seems like a real ugly pain. Somewhere, someplace python is keeping > > track of the current index in list, does anyone know how to access it? Or > > have > > any other suggestions? > > Um, one of us is being really really dense today :) I hope it's not > me... > what's wrong with: > > i = 0 > for object in list: > objectIndex = i > print objectIndex > i += 1 > > Iain
Reading it again, I'm thinking it probably is me... If you aren't looking them up sequentially then I think your second example is the only way. You can make it a little prettier by using 'object is i' rather than 'id(object) == id(i)'. I think python only stores lists one way - i.e. each index maps to it's value, but no backwards trace is kept from value to index. Iain -- http://mail.python.org/mailman/listinfo/python-list