當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。