Python Language Articoli più grandi e più piccoli in una collezione


Esempio

Per trovare gli elementi più grandi in una raccolta, il modulo heapq ha una funzione chiamata nlargest , gli passiamo due argomenti, il primo è il numero di elementi che vogliamo recuperare, il secondo è il nome della raccolta:

import heapq


numbers = [1, 4, 2, 100, 20, 50, 32, 200, 150, 8]
print(heapq.nlargest(4, numbers))  # [200, 150, 100, 50]

Allo stesso modo, per trovare gli elementi più piccoli in una raccolta, usiamo la funzione nsmallest :

print(heapq.nsmallest(4, numbers))  # [1, 2, 4, 8]

Entrambe le funzioni nlargest e nsmallest accettano un argomento opzionale (parametro chiave) per strutture dati complicate. Nell'esempio seguente viene illustrato l'utilizzo della proprietà age per recuperare il dizionario più vecchio e più recente del people :

people = [
    {'firstname': 'John', 'lastname': 'Doe', 'age': 30},
    {'firstname': 'Jane', 'lastname': 'Doe', 'age': 25},
    {'firstname': 'Janie', 'lastname': 'Doe', 'age': 10},
    {'firstname': 'Jane', 'lastname': 'Roe', 'age': 22},
    {'firstname': 'Johnny', 'lastname': 'Doe', 'age': 12},
    {'firstname': 'John', 'lastname': 'Roe', 'age': 45}
]

oldest = heapq.nlargest(2, people, key=lambda s: s['age'])
print(oldest)
# Output: [{'firstname': 'John', 'age': 45, 'lastname': 'Roe'}, {'firstname': 'John', 'age': 30, 'lastname': 'Doe'}]

youngest = heapq.nsmallest(2, people, key=lambda s: s['age'])
print(youngest)
# Output: [{'firstname': 'Janie', 'age': 10, 'lastname': 'Doe'}, {'firstname': 'Johnny', 'age': 12, 'lastname': 'Doe'}]