[Python-3000] dict view operations (original) (raw)

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