> I don't know what is the best: > * using an additional dict and maintaining it
It works, but as you say, is somewhat inelegant. > * or using the "di" module proposed by CTO Let me be clear: I am not proposing that you use it. It *does* do what you ask- but what you are asking is, all by itself, not a good idea. The dict is a vastly superior- and standard- solution to the problem of mapping one object onto another. > If "di" is reliable, it seems a good solution for my initial constraint > which is the impossibility to store anything but strings in my data > structure. di is not reliable. Its author says so, and took a lot of heat for not saying so in Hollywood-sign letters, lit on fire and a thousand feet tall. If all you are worried about is storing a string, how about UserString? Notice the difference: >>> from collections import UserString >>> import weakref >>> weakref.ref("ABC") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot create weak reference to 'str' object >>> weakref.ref(UserString("ABC")) <weakref at 0xb7baef2c; to 'UserString' at 0xb7a330ec> This way you don't have to maintain a dictionary, only store your string once, and don't have to hack and kludge your way around id mappings. -- http://mail.python.org/mailman/listinfo/python-list