从可迭代对象中获取值。
项目描述
pluck:快速从值可迭代中提取“字段”
pluck是从值可迭代中提取“字段”的最简单方法。“字段”可以是item.field或item[field]。Pluck会按此顺序尝试两者。如果什么都没有找到,并且没有指定默认值,它将抛出异常。
用法
该软件包包含一个模块,其中包含两个函数
from pluck import pluck, ipluck
ipluck是pluck的可迭代版本。可以这样使用它
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a84a60ee6681b933d9b6757b3febbde4a200f2f6f65d396e214ad4ecab2efdf |
|
MD5 | ba2edbbee4feebecf4d62c193e7854bc |
|
BLAKE2b-256 | 92d5d671e0130c8a11d43db8c532abcd4526413fd73a134c4d5cd2930fdafcc9 |