[Python-ideas] Adding list.pluck()
Mathias Panzenböck
grosser.meister.morti at gmx.net
Sat Jun 2 17:54:50 CEST 2012
There are already at least two easy ways to do this:
>>> stooges=[{'name': 'moe', 'age': 40}, {'name': 'larry', 'age': 50}, {'name': 'curly', 'age': 60}]
>>> [guy['name'] for guy in stooges]
['moe', 'larry', 'curly']
>>> from operator import itemgetter
>>> map(itemgetter('name'),stooges)
['moe', 'larry', 'curly']
Also I'm used to such functions being called "collect" (Ruby) or "map" (Python, jQuery) and
accepting a function/block as an argument. In Ruby-on-Rails it can be &:name as a shorthand for
{|item| item[:name]}, which is equivalent to itemgetter('name') in Python. So if you insist of
making it shorter (but less readable) you could do:
>>> from operator import itemgetter as G
>>> map(G('name'),stooges)
['moe', 'larry', 'curly']
On 06/01/2012 11:10 PM, Cenk Altı wrote:
> Hello All,
>
> pluck() is a beautiful function which is in underscore.js library.
> Described as "A convenient version of what is perhaps the most common
> use-case for map: extracting a list of property values."
>
> http://documentcloud.github.com/underscore/#pluck
>
> What about it implementing for python lists? And maybe for other iterables?
More information about the Python-ideas
mailing list