[Python-3000] PEP 3106: Revamping dict.keys(), .values() and .items()

Talin talin at acm.org
Wed Dec 20 08:16:53 CET 2006

Guido van Rossum wrote:
> I've written a quick version of PEP 3106, which expresses my ideas
> about how the dict methods to access keys, values and items should be
> redone.
> The text is in svn:
> http://svn.python.org/view/peps/trunk/pep-3106.txt?rev=53096&view=markup
> At some point it will appear on python.org: http://python.org/dev/peps/pep-3106/
> Comments please? (Or we can skip the comments and go straight to the
> implementation stage. Patch anyone?)


1) values() should be documented as list-like rather than set-like. (Or 
better yet bag-like, but Python doesn't have bags. In other words, it's 
really an unordered collection of items with no special indexing 
semantics or uniqueness constraint.)

My reasoning is that generally people don't expect to be able to do set 
membership tests of the values of a mapping; Mostly, values() is used 
for iteration. And given that all of the set-like operations are slow, 
let's just cut to the chase and say that values() isn't a set at all.

2) Names for d_keys, et al:

   -- map_keys_view
   -- map_values_view
   -- map_keys_values_view or map_items_view

Essentially, its a class that can take any map, and provide a view of 
its keys / values / etc.

Alternatively, we could stick them in a module called 'mapview' and call 

   -- mapview.keys
   -- mapview.values
   -- mapview.items

-- Talin

More information about the Python-3000 mailing list