sorted() în Python

Funcții încorporate Python 3.0+

Returnează o listă nouă, sortată, cu elementele unei colecții.

Sintaxă
sorted(iterabil, /, *, key=None, reverse=False)

Ce face sorted()

sorted() primește orice colecție și returnează o listă nouă cu elementele în ordine crescătoare. Colecția originală rămâne neschimbată, spre deosebire de metoda list.sort(), care sortează lista pe loc.

Cu key dai o funcție care calculează, pentru fiecare element, valoarea după care se sortează (lungimea, un câmp dintr-un dicționar, textul cu litere mici). Cu reverse=True ordinea devine descrescătoare. Sortarea este stabilă: elementele egale își păstrează ordinea inițială.

Parametri

Parametru Descriere
iterabil Colecția de sortat: listă, tuplu, text, dicționar (se sortează cheile), mulțime.
key Opțional. O funcție aplicată fiecărui element pentru a obține criteriul de sortare.
reverse Opțional. True pentru ordine descrescătoare.

Ce returnează

O listă nouă, sortată.

Exemple

Exemplul 1: Numere și texte

note = [7, 10, 5, 9]
print(sorted(note))
print(sorted(note, reverse=True))
print(note)
print(sorted("python"))

Rezultat

[5, 7, 9, 10]
[10, 9, 7, 5]
[7, 10, 5, 9]
['h', 'n', 'o', 'p', 't', 'y']

Exemplul 2: Sortare după o cheie

orase = ["Iași", "Cluj-Napoca", "Arad", "Brașov"]
print(sorted(orase, key=len))

elevi = [{"nume": "Ana", "media": 9.5}, {"nume": "Mihai", "media": 8.7}, {"nume": "Ioana", "media": 9.8}]
for e in sorted(elevi, key=lambda e: e["media"], reverse=True):
    print(e["nume"], e["media"])

Rezultat

['Iași', 'Arad', 'Brașov', 'Cluj-Napoca']
Ioana 9.8
Ana 9.5
Mihai 8.7

Exemplul 3: Majuscule și diacritice

Implicit, sortarea compară codurile caracterelor: majusculele vin înaintea literelor mici, iar literele cu diacritice ajung la final. key=str.lower rezolvă problema majusculelor.

cuvinte = ["mere", "Zmeură", "banane", "ăsta"]
print(sorted(cuvinte))
print(sorted(cuvinte, key=str.lower))

Rezultat

['Zmeură', 'banane', 'mere', 'ăsta']
['banane', 'mere', 'Zmeură', 'ăsta']

Greșeli frecvente

  • Scrii lista = lista.sort() și lista devine None. list.sort() sortează pe loc și returnează None; sorted() returnează lista nouă.
  • Sortezi o listă cu tipuri amestecate ([3, "a"]) și primești TypeError: '<' not supported.

Comenzi înrudite

  • list.sort(): Sortează o listă pe loc, cu criteriu și ordine opționale.
  • reversed(): Parcurge o secvență (listă, text, tuplu, range) de la sfârșit la început.
  • lambda: Creează o funcție mică, fără nume, scrisă pe un singur rând.
  • min() și max(): Returnează cel mai mic sau cel mai mare element dintr-o colecție sau dintre mai multe valori.