Cerca un elenco di dizionari in Python
-
Usa la funzione
next()
per cercare un elenco di dizionari in Python -
Cerca in un elenco di dizionari con la funzione
filter()
in Python - Usa la comprensione della lista per cercare 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}
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.
LinkedInArticolo correlato - Python Dictionary
- Come controllare se una chiave esiste in un dizionario in Python
- Converti un dizionario in una lista in Python
- Come ottenere tutti i file di una directory
- Trova il valore massimo nel dizionario Python
- Come ordinare un dizionario di Python per valore
- Come fondere due dizionari in Python 2 e 3
Articolo correlato - Python List
- Converti un dizionario in una lista in Python
- Rimuovi i duplicati dall'lista in Python
- Rimuovi tutte le occorrenze di un elemento da una lista in Python
- Ottieni la media di una lista in Python
- Qual è la differenza tra i metodi di elencazione, aggiungere ed estendere
- Come convertire una lista in stringa in Python