Buscar una lista de diccionarios en Python

Muhammad Maisam Abbas 30 enero 2023
  1. Utilice la función next() para buscar una lista de diccionarios en Python
  2. Buscar una lista de diccionarios con la función filter() en Python
  3. Utilice la comprensión de listas para buscar una lista de diccionarios en Python
Buscar una lista de diccionarios en Python

Este tutorial presentará los métodos que puede utilizar para buscar una lista de diccionarios en Python.

Utilice la función next() para buscar una lista de diccionarios en Python

La función next() se puede utilizar para proporcionar el resultado como el siguiente elemento en el iterador dado. Este método también requiere el uso del bucle for para probar el proceso contra todas las condiciones.

El siguiente código usa la función next() para buscar una lista de diccionarios en 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"))

Producción :

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

Este método se implementa con éxito cuando buscamos un nombre que ya existe en la lista de diccionarios. Aún así, da un error de StopIteration cuando se busca un nombre que no existe en la lista de diccionarios.

Sin embargo, este problema se puede tratar fácilmente en el código anterior. Simplemente modifica y proporciona un valor predeterminado con el uso de una API ligeramente diferente.

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))

Producción :

None

En lugar de buscar el elemento en sí, también podemos encontrar el índice del elemento en una Lista de diccionarios. Para implementar esto, podemos usar la función enumerate().

El siguiente código utiliza la función next() y la función enumerate() para buscar y encontrar el índice del 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))

Producción :

2

Buscar una lista de diccionarios con la función filter() en Python

La función filter(function, sequence) se utiliza para comparar la sequence con la function en Python. Comprueba que cada elemento de la secuencia sea verdadero o no según la función. Podemos buscar fácilmente un elemento en una lista de diccionarios utilizando la función filter() con una función lambda. En Python3, la función filter() devuelve un objeto de la clase filter. Podemos convertir ese objeto en una lista con la función list().

El siguiente ejemplo de código nos muestra cómo podemos buscar en una lista de diccionarios un elemento específico con las funciones filter() y 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))

Producción :

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

Buscamos en la lista de diccionarios el elemento donde la clave name es igual a Richard utilizando la función filter() con una función lambda. Primero, inicializamos nuestra lista de diccionarios, listOfDicts, y usamos la función filter() para buscar los valores que coinciden con la función lambda lambda item: item['name'] == 'Richard' in eso. Finalmente, usamos la función list() para convertir los resultados en una lista.

Utilice la comprensión de listas para buscar una lista de diccionarios en Python

La comprensión de listas es una forma relativamente más corta y muy elegante de crear listas que se formarán en función de los valores dados de una lista ya existente.

Podemos usar la comprensión de listas para devolver una lista que produzca los resultados de la búsqueda de la lista de diccionarios en Python.

El siguiente código usa la comprensión de listas para buscar una lista de diccionarios en 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])

Producción :

{'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

Artículo relacionado - Python Dictionary

Artículo relacionado - Python List