Skip to main content

Plucks values from an iterable.

Project description

pluck: Quickly pluck “fields” from a list of values

pluck is the simplest way of plucking “fields” from an iterable of values. “Fields” are either item.field or item[field]. Pluck tries both, in that order. If nothing is found, and no default value is specified, it throws an exception.

Usage

The package consists of one module consisting of one function:

from pluck import pluck

pluck(iterable, key)

Or:

pluck(iterable, *keys)

Examples

A simple example first. Say you have a list of datetimes:

>>> from pluck import pluck
>>> dates = [
...     datetime(2012, 10, 22, 12, 00),
...     datetime(2012, 10, 22, 15, 14),
...     datetime(2012, 10, 22, 21, 44),
... ]
>>> pluck(dates, 'day')
[22, 22, 22]
>>> pluck(dates, 'hour')
[12, 15, 21]

It also works on dictionary-like access (__getitem__):

>>> objects = [
...      {'id': 282, 'name': 'Alice', 'age': 30, 'sex': 'female'},
...      {'id': 217, 'name': 'Bob', 'age': 56},
...      {'id': 328, 'name': 'Charlie', 'age': 56, 'sex': 'male'},
... ]
>>> pluck(objects, 'name')
['Alice', 'Bob', 'Charlie']
>>> pluck(objects, 'age')
[30, 56, 56]

You can also combine these into a single pluck:

>>> pluck(objects, 'name', 'age')
[('Alice', 30), ('Bob', 56), ('Charlie', 56)]

Defaults

You can specify default values, too. By default, pluck will throw an exception when a “field” does not exist. To instead fill these places with a default value, use this:

>>> pluck(objects, 'sex')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pluck.py", line 104, in pluck
      return list(ipluck(iterable, *keys, **kwargs))
  File "pluck.py", line 49, in getter
      raise ValueError('Item %r has no attr or key for %r' % (item, key))
  ValueError: Item {'age': 56, 'id': 217, 'name': 'Bob'} has no attr or key for 'sex'
>>> pluck(objects, 'sex', default='unknown')
['female', 'unknown', 'male']

When you specify multiple keys, you need to use the defaults keyword argument instead (note the plurality):

>>> pluck(objects, 'name', 'sex', defaults={'sex': 'unknown'})
[('Alice', 'female'), ('Bob', 'unknown'), ('Charlie', 'male')]

Iterator, rather?

Use ipluck if you’d rather wanna have an iterator.

pluck is equivalent to list(ipluck(...)).

History

0.1.0 (2012-10-22)

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pluck-0.1.tar.gz (4.0 kB view details)

Uploaded Source

File details

Details for the file pluck-0.1.tar.gz.

File metadata

  • Download URL: pluck-0.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pluck-0.1.tar.gz
Algorithm Hash digest
SHA256 1ed0c830216cbdb1e32187c8e35de15007a82baa4a86912396d7a50a84fbab3e
MD5 7ffacaf264cec76a932e84adc898f8ed
BLAKE2b-256 c45a15a999d5267f76d35d2aa7757790e5dbdf0eda7471f879131f19c857c360

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page