[Python-3000] dict view operations

Guido van Rossum guido at python.org
Tue Sep 4 20:22:31 CEST 2007


On 9/4/07, Georg Brandl <g.brandl at gmx.net> wrote:
> Georg Brandl schrieb:
> > While looking at documenting the dict view changes, I came across an
> > inconsistency in how the dict views' set-like operations are implemented:
> > with sets/frozensets, the operator versions only work if the other operand
> > is a set/frozenset, while the dict view operators allow any iterable.
> >
> > Do we care?

The Set ABCs in PEP 3119 should be followed IMO. But they haven't
received a lot of review so we may have to go back and discuss what
that PEP should say (and perhaps it isn't giving enough detail).
However, I don't see it as a violation if some of the types are more
lenient in what they accept -- they just shouldn't be more
restrictive.

> Oh, and another thing: the items views can contain unhashable values, so
>
> d.items() & d.items()
>
> will fail for such dictionaries since the operands are converted to sets
> before doing the intersection.
>
> I suspect there's nothing that can easily be done about that though...

Indeed, since the result must be a new set (not a view) and the result
cannot be represented as a set either (unless it's empty or happens to
contain no unhashable values, which would be a rare piece of luck).

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-3000 mailing list