dict view to list

Aaron Brady castironpi at gmail.com
Sun Mar 29 03:39:10 EDT 2009


On Mar 27, 7:26 pm, Terry Reedy <tjre... at udel.edu> wrote:
> Luis Gonzalez wrote:
> > Yes, I know the python approach is to use built-ins.
> > But wouldn't it be cool if we could do mydict.values().tolist()
> > instead?
>
> Should we also give every collection a .toset(), .tofrozenset(),
> .totuple(), and .todict() method?  This way lies the madness of
> combinatorial explosion.
>
> > It would be more regular and intuitive and readable from an OO point
> > of view.
>
> In my opinion, this is backwards.  From an OO point of view, instances
> of class X should be created by the constructor for that class.  That is
> where the knowledge of the intermal structure of class X instances
> belongs.
snip
> The stream of object provided by
> the iterator is the common means of transferring information.

AKA the iterator protocol.

snip
> It is part of python basic design.  Functions used as functions can be
> passed as arguments to functions and used to operator on heterogeneous
> collections, as in the example above.
>
> Terry Jan Reedy

I guess there are two arguments for the change.

1.  Flat is better than nested.
2.  It interferes with the way people read text.

The order of events are: First, get the view.  Then convert it to a
list.  Hence, dictA.get_view( ).to_list( ).

This may call for a more fundamental change to a programming language
than Python should make; and it may have to wait for another
generation.  It entails that function applications should be of the
form '( x )f' instead of 'f( x )', in a pretty general way.

I also recognize that natural language and thus human thinking does
admit of a certain depth of nesting.  English, notably, has two means
of nesting, at least in the possessive case.  'The mother of
invention' and "invention's mother".  Here is a predicate example too:
'The cat is on the mat' and 'On the mat is the cat', although the late
is mostly unattested-to these days.



More information about the Python-list mailing list