There's no way that loop takes fifteen minutes just because of the dot operator. I mean, 200000 dots in 15 minutes is 200 dots/second. On a 1 GHz machine, that would be 5 million cycles per dot. That does not seem reasonable (assuming you haven't overridden the dot operator to do something more complicated than normal).
Check that i.label does not have __hash__ overridden in a bad way. I tried a test case with __hash__ overridden to always return the same integer, and I got performance about what you are describing when I tried your example loop with 100000 iterations. And, of course, make sure you are not low on memory and relying too heavily on swap space. -- http://mail.python.org/mailman/listinfo/python-list