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”).