O módulo operator transforma operações comuns em funções. itemgetter acessa posições ou chaves; attrgetter percorre atributos, inclusive caminhos como cliente.nome. Eles são úteis em sorted, min, max, map e agrupamentos.
from operator import attrgetter, itemgetter
rows = [("Ana", 91), ("Beto", 84), ("Caio", 96)]
ranking = sorted(rows, key=itemgetter(1), reverse=True)
class User:
def __init__(self, name: str) -> None:
self.name = name
names = list(map(attrgetter("name"), [User("Ana"), User("Beto")]))
Como usar com segurança
Escolha itemgetter para sequências e mappings, e attrgetter para objetos. Uma lambda continua melhor quando a regra inclui transformação, valor padrão ou validação. Não esconda acessos que podem falhar: documente as chaves e atributos exigidos.
Para aprofundar a base, consulte guia de collections em Python e guia de type hints.
A documentação oficial do Python, consultada em 22 de julho de 2026, descreve a API, os casos-limite e a compatibilidade entre versões.