当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python operator.itemgetter用法及代码示例


用法:

operator.itemgetter(item)
operator.itemgetter(*items)

返回一个可调用对象,该对象使用操作数的 __getitem__() 方法从其操作数中获取 item。如果指定了多个项目,则返回查找值的元组。例如:

  • f = itemgetter(2) 之后,调用 f(r) 返回 r[2]
  • g = itemgetter(2, 5, 3) 之后,调用 g(r) 返回 (r[2], r[5], r[3])

相当于:

def itemgetter(*items):
    if len(items) == 1:
        item = items[0]
        def g(obj):
            return obj[item]
    else:
        def g(obj):
            return tuple(obj[item] for item in items)
    return g

这些项目可以是操作数的__getitem__() 方法接受的任何类型。字典接受任何可散列的值。列表、元组和字符串接受索引或切片:

>>> itemgetter(1)('ABCDEFG')
'B'
>>> itemgetter(1, 3, 5)('ABCDEFG')
('B', 'D', 'F')
>>> itemgetter(slice(2, None))('ABCDEFG')
'CDEFG'
>>> soldier = dict(rank='captain', name='dotterbart')
>>> itemgetter('rank')(soldier)
'captain'

使用 itemgetter() 从元组记录中检索特定字段的示例:

>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
>>> getcount = itemgetter(1)
>>> list(map(getcount, inventory))
[3, 2, 5, 1]
>>> sorted(inventory, key=getcount)
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 operator.itemgetter。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。