Hello! > If I have a simple dictionary, where the value is a class or function, > is there an interface through which it can discover what its key is?
The key of a value may not be unique, so you can also get a tupe of keys, like dict(a=1, b=1), the key's of 1 are a and b. For unique values, I did something like that couple of weeks ago, the thing you would need is the getKey thing, it's fast, but needs much memory for big structures becouse I use two dicts. If speed does not matter: class ReverseDict(dict): def get_keys(self, value): keys = [] for k, v in self.items(): if v == value: keys.append(k) return keys class UniqueReverseDict(dict): """ A dictionary that can resolute reverse: A object to a key. Both, the Key and the Value must be unique. """ def __init__(self, **kws): super(UniqueReverseDict, self).__init__(kws) self.__reverse = {} def __setitem__(self, k, v): super(UniqueReverseDict, self).__setitem__(k, v) self.__reverse[v] = k def __update_reverse(self): self.__reverse.clear() for k, v in self.items(): self.__reverse[v] == k def has_value(self, v): return self.__reverse.has_key(v) def __delitem__(self, k): self.__reverse[self[k]] super(UniqueReverseDict, self).__delitem__(k) def clear(self): self.__reverse.clear() super(UniqueReverseDict, self).clear() def copy(self): return UniqueReverseDict(self) def pop(self, k): del self.__reverse[self[k]] return self.pop(k) def popitem(self, **kws): raise 'AxsPy.Misc.Structures.UniqueReverseDict', \ 'NotImplemented' def setdefault(self, **kws): raise 'AxsPy.Misc.Structures.UniqueReverseDict', \ 'NotImplemented' def update(self, **kws): super(UniqueReverseDict, self).update(**kws) self.__update_reverse() def getKey(self, v): return self.__reverse[v] Lg, AXEL -- "Aber naja, ich bin eher der Forentyp." Wolfibolfi's outing in http://www.informatik-forum.at/showpost.php?p=206342&postcount=10 -- http://mail.python.org/mailman/listinfo/python-list