[Python-Dev] Getting values stored inside sets (original) (raw)
Steven D'Aprano steve at pearwood.info
Fri Apr 3 16:57:21 CEST 2009
- Previous message: [Python-Dev] Getting values stored inside sets
- Next message: [Python-Dev] Getting values stored inside sets
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, 3 Apr 2009 11:22:02 pm Paul Moore wrote:
I'd say that you're abusing eq here. If you can say "x in s" and then can't use x as if it were the actual item inserted into s, then are they really "equal"?
That's hardly unusual in Python.
alist = [0, 1, 2, 3, 4] 3.0 in alist True alist[3.0] Traceback (most recent call last): File "", line 1, in TypeError: list indices must be integers
Besides, there's a concrete use-case for retrieving the actual object inside the set. You can ensure that you only have one instance of any object with a particular value by using a cache like this:
_cache = {} def cache(obj): if obj in _cache: return _cache[obj] _cache[obj] = obj return obj
Arguably, it would be neater if the cache was a set rather than a dict, thus saving one pointer per item, but of course that would rely on a change on set behaviour.
-- Steven D'Aprano
- Previous message: [Python-Dev] Getting values stored inside sets
- Next message: [Python-Dev] Getting values stored inside sets
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]