pre-PEP generic objects
Steven Bethard
steven.bethard at gmail.com
Tue Nov 30 11:58:48 EST 2004
Nick Coghlan wrote:
> The proposed use cases sound more appropriate for a "named tuple" than
> any sort of dictionary. (This may have been mentioned in previous
> discussions. I wasn't keeping track of those, though)
For the return values, yeah, a "named tuple" is probably at least as
appropriate. I'm not sure a "named tuple" is necessary for the
hierarchical data. (It wasn't for me in my DOM to Bunch example.)
I saw the "named tuple" thread slowly die, mainly because the most ideal
solution:
(name1:val1, name2:val2)
requires a change in Python's syntax, which is a tough route to go.
This PEP isn't attempting to solve the "named tuple" problem, though if
that thread picks back up again and produces a solution that also solves
the problems here, I'm more than willing to merge the two PEPs.
Note that I'm not trying to solve all the problems that a "named tuple"
could solve -- just the problem of converting __getattr__ syntax to
dotted-attribute syntax without the need to declare a class.
> Notice that I've used 'fromPairs' rather than 'fromMapping', since
> consistent order matters for a tuple. Comparison semantics are inherited
> directly from tuple, and don't care about names (they're only interested
> in values).
frommapping was intended to handle the recursive (hierarchical data)
case. (Perhaps it needs a better name to clarify this...) The shallow
conversion was handled in the Bunch constructor. I don't see that your
named_tuple type handles the recursive case, does it?
>
> Also, it seems like there has to be a better way to do the "opposite of
> zip()" in fromPairs(), but I sure as hell can't think of it.
I think zip(*) is usually the inverse of zip():
.>>> zip(*sorted({'x':3, 'y':8}.items()))
.[('x', 'y'), (3, 8)]
Steve
More information about the Python-list
mailing list