Cerca un elenco di dizionari in Python

Muhammad Maisam Abbas 12 luglio 2021
  1. Usa la funzione next() per cercare un elenco di dizionari in Python
  2. Cerca in un elenco di dizionari con la funzione filter() in Python
  3. Usa la comprensione della lista per cercare un elenco di dizionari in Python
Cerca un elenco di dizionari in Python

Questo tutorial introdurrà i metodi che puoi usare per cercare un elenco di dizionari in Python.

Usa la funzione next() per cercare un elenco di dizionari in Python

La funzione next() può essere utilizzata per fornire il risultato come elemento successivo nell’iteratore dato. Questo metodo richiede anche l’uso del cicli for per testare il processo rispetto a tutte le condizioni.

Il codice seguente usa la funzione next() per cercare un elenco di dizionari in Python.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]
print(next(x for x in lstdict if x["name"] == "Klaus"))
print(next(x for x in lstdict if x["name"] == "David"))

Produzione:

{'name': 'Klaus', 'age': 32}
Traceback (most recent call last):
  File "<string>", line 8, in <module>
StopIteration

Questo metodo viene implementato con successo quando cerchiamo un nome che esiste già nella lista dei dizionari. Tuttavia, dà un errore StopIteration quando viene cercato un nome che non esiste nella lista dei dizionari.

Tuttavia, questo problema può essere facilmente trattato nel codice precedente. È sufficiente modificare e fornire un valore predefinito con l’uso di un’API leggermente diversa.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]
print(next((x for x in lstdict if x["name"] == "David"), None))

Produzione:

None

Invece di trovare l’elemento stesso, possiamo anche trovare l’indice dell’elemento in un elenco di dizionari. Per implementare ciò, possiamo usare la funzione enumerate().

Il codice seguente utilizza la funzione next() e la funzione enumerate() per cercare e trovare l’indice dell’elemento.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]
print(next((i for i, x in enumerate(lstdict) if x["name"] == "Kol"), None))

Produzione:

2

Cerca in un elenco di dizionari con la funzione filter() in Python

La funzione filter(function, sequence) è usata per confrontare la sequence con la function in Python. Controlla che ogni elemento nella sequenza sia vero o meno in base alla funzione. Possiamo facilmente cercare un elenco di dizionari per un elemento utilizzando la funzione filter() con una funzione lambda. In Python3, la funzione filter() restituisce un oggetto della classe filter. Possiamo convertire quell’oggetto in una lista con la funzione list().

Il seguente esempio di codice ci mostra come possiamo cercare un elenco di dizionari per un elemento specifico con le funzioni filter() e lambda.

listOfDicts = [
    {"name": "Tommy", "age": 20},
    {"name": "Markus", "age": 25},
    {"name": "Pamela", "age": 27},
    {"name": "Richard", "age": 22},
]
list(filter(lambda item: item["name"] == "Richard", listOfDicts))

Produzione:

[{'age': 22, 'name': 'Richard'}]

Abbiamo cercato nella lista dei dizionari l’elemento in cui la chiave name è uguale a Richard utilizzando la funzione filter() con una funzione lambda. Innanzitutto, abbiamo inizializzato il nostro elenco di dizionari, listOfDicts, e utilizzato la funzione filter() per cercare i valori che corrispondono alla funzione lambda lambda item: item['name'] == 'Richard' in esso. Infine, abbiamo usato la funzione list() per convertire i risultati in una lista.

Usa la comprensione della lista per cercare un elenco di dizionari in Python

La comprensione delle liste è un modo relativamente breve e molto aggraziato per creare liste che devono essere formate in base ai valori dati di una lista già esistente.

Possiamo usare la comprensione delle liste per restituire una lista che produce i risultati della ricerca della lista dei dizionari in Python.

Il codice seguente usa la comprensione delle liste per cercare un elenco di dizionari in Python.

lstdict = [
    {"name": "Klaus", "age": 32},
    {"name": "Elijah", "age": 33},
    {"name": "Kol", "age": 28},
    {"name": "Stefan", "age": 8},
]

print([x for x in lstdict if x["name"] == "Klaus"][0])

Produzione:

{'name': 'Klaus', 'age': 32}
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Articolo correlato - Python Dictionary

Articolo correlato - Python List