跳转到主要内容

从可迭代对象中获取值。

项目描述

pluck:快速从值可迭代中提取“字段”

https://travis-ci.org/nvie/pluck.png

pluck是从值可迭代中提取“字段”的最简单方法。“字段”可以是item.fielditem[field]。Pluck会按此顺序尝试两者。如果什么都没有找到,并且没有指定默认值,它将抛出异常。

用法

该软件包包含一个模块,其中包含两个函数

from pluck import pluck, ipluck

ipluckpluck的可迭代版本。可以这样使用它

pluck(iterable, key)

或者

pluck(iterable, *keys)

示例

先从一个简单的例子开始。假设你有一个日期时间的列表

>>> 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]

它也适用于类似字典的访问(__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]

你还可以将它们组合成一个单一的pluck

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

默认值

你还可以指定默认值。默认情况下,如果“字段”不存在,pluck将抛出异常

>>> 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']

当你指定多个键时,你需要使用defaults(复数!)关键字参数

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

迭代器,而不是?

如果你想要一个迭代器,请使用ipluck

>>> from pluck import ipluck
>>> ipluck(large_stream_of_items, 'name')
<itertools.imap object at 0x10c7515d0>

pluck相当于list(ipluck(...))

历史

0.2 (2012-10-22)

  • 添加Python 3兼容性

  • 改进文档

0.1 (2012-10-22)

  • 首次发布。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码发行版

pluck-0.2.tar.gz (4.3 kB 查看哈希值)

上传时间 源代码

支持者