← retour aux snippets

operator: itemgetter/attrgetter pour trier

Trier rapidement des séquences par clé ou attribut.

python algorithms #operator#sorting#keyfunc

objectif

Trier rapidement des séquences par clé ou attribut.

code minimal

from operator import itemgetter, attrgetter

data = [{"name":"b","age":2},{"name":"a","age":3}]
by_name = sorted(data, key=itemgetter("name"))
print(by_name[0]["name"] == "a")  # attendu: True

utilisation

from operator import attrgetter
class User:
    def __init__(self, name, age): self.name, self.age = name, age
users = [User("b",2), User("a",3)]
print(sorted(users, key=attrgetter("name"))[0].name == "a")

variante(s) utile(s)

from operator import itemgetter
rows = [(2,"b"), (1,"a")]
print(sorted(rows, key=itemgetter(0))[0][0] == 1)

notes

  • key=itemgetter(…) est plus rapide que lambda équivalente.
  • Combinez plusieurs clés: itemgetter(“name”,“age”).