Ce face functools.cmp_to_key()
În Python 3, sorted() și list.sort() acceptă doar key, nu și o funcție de comparare. Unele reguli de ordonare sunt însă mai ușor de scris ca „compară a cu b”: returnezi un număr negativ dacă a vine înainte, 0 dacă sunt egale, pozitiv dacă vine după. cmp_to_key() face legătura.
Parametri
| Parametru | Descriere |
|---|---|
mycmp |
Funcția de comparare cu două argumente. |
Ce returnează
O clasă-cheie folosită ca key.
Exemple
Exemplul 1: Cel mai mare număr format din cifre
Pentru două numere, verificăm care alăturare dă un număr mai mare: "9" + "34" sau "34" + "9".
from functools import cmp_to_key
def compara(a, b):
if a + b > b + a:
return -1
if a + b < b + a:
return 1
return 0
numere = ["3", "30", "34", "5", "9"]
print("".join(sorted(numere, key=cmp_to_key(compara))))
Rezultat
9534330
Greșeli frecvente
- Funcția de comparare returnează
True/Falseîn loc de negativ/zero/pozitiv, iar sortarea iese greșită.
Comenzi înrudite
sorted(): Returnează o listă nouă, sortată, cu elementele unei colecții.list.sort(): Sortează o listă pe loc, cu criteriu și ordine opționale.functools.total_ordering: Completează automat toți operatorii de comparare ai unei clase care definește doar egalitatea și unul dintre ei.