[Python-ideas] get() method for list and tuples

Chris Barker chris.barker at noaa.gov
Wed Mar 1 22:28:27 EST 2017


On Tue, Feb 28, 2017 at 5:26 PM, Michel Desmoulin <desmoulinmichel at gmail.com
> wrote:

> Duck typing is precesily about incomplete but good enough similar API.
>

yes, though ideally one API is a subset of the other -- if they have the
same method, it should mean the same thing:



> For the dict and list:
>
> - you can iterate on both
>

But you get different things -- dicts iterate on the keys, which wold be
the equivalent of lists iterating on the indexes -- no one wants that!

- you can index both
>

the indexing is only kinda the same, though, and you certainly can't slice
dicts...


> - you can size both
>

huh? what does sizing mean? you mean get the length? OK, that's similar.


> Hence I can see very well functions working with both. E.G: helper to
> extract x elements or a default value:
>
> def extract(data, *args, default="None"):
>     for x in args:
>         try:
>             yield data[x]
>         except (KeyError, ValueError):
>             yield default
>
> Usage:
>
>
> a, b, c = extract(scores, "foo", "bar", "doh")
> x, y, z = extract(items, 2, 5, 8, default=0)
>

really? when would you not know if your "keys" are indexes or arbitrary
keys? or your data a sequence or mapping?

I actually have this helper function.
>
> With list.get and tuple.get, this would become:
>
> def extract(data, *args, default="None"):
>     return (data.get(x, default) for x in args)
>

as a helper function, then it's OK if it's a bit more verbose.

If you were to argue that you wouldn't need the helper function at all,
then that might make sense, but this still seems a dangerous and hopefully
rare thing to do!

-CHB


-- 

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170301/e35bf490/attachment.html>


More information about the Python-ideas mailing list