Pesquise uma lista de dicionários em Python

Muhammad Maisam Abbas 30 janeiro 2023
  1. Use a função next() para pesquisar uma lista de dicionários em Python
  2. Pesquise uma lista de dicionários com a função filter() em Python
  3. Use a compreensão de lista para pesquisar uma lista de dicionários em Python
Pesquise uma lista de dicionários em Python

Este tutorial irá apresentar os métodos que você pode usar para pesquisar uma lista de dicionários em Python.

Use a função next() para pesquisar uma lista de dicionários em Python

A função next() pode ser utilizada para fornecer o resultado como o próximo item no iterador fornecido. Este método também requer o uso do loop for para testar o processo em todas as condições.

O código a seguir usa a função next() para pesquisar uma lista de dicionários em 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"))

Resultado:

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

Este método é implementado com sucesso quando procuramos um nome que já existe na lista de dicionários. Ainda assim, dá um erro StopIteration quando é pesquisado um nome que não existe na lista de dicionários.

No entanto, esse problema pode ser facilmente tratado no código acima. Você simplesmente ajusta e fornece um padrão com o uso de uma API ligeiramente 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))

Resultado:

None

Em vez de localizar o item em si, também podemos localizar o índice do item em uma Lista de dicionários. Para implementar isso, podemos usar a função enumerate().

O código a seguir usa a função next() e a função enumerate() para pesquisar e encontrar o índice do item.

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

Resultado:

2

Pesquise uma lista de dicionários com a função filter() em Python

O filter(function, sequence) função é usado para comparar a sequence com a function em Python. Ele verifica se cada elemento na sequência é verdadeiro ou não de acordo com a função. Podemos pesquisar facilmente uma lista de dicionários para um item usando a função filter() com uma função lambda. Em Python3, a função filter() retorna um objeto da classe filter. Podemos converter esse objeto em uma lista com a função list().

O exemplo de código a seguir nos mostra como podemos pesquisar uma lista de dicionários para um elemento específico com as funções 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))

Resultado:

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

Procuramos na lista de dicionários o elemento onde a chave name é igual a Richard usando a função filter() com uma função lambda. Primeiro, inicializamos nossa lista de dicionários, listOfDicts, e usamos a função filter() para pesquisar os valores que correspondem à função lambda lambda item: item['name'] == 'Richard' em isto. Finalmente, usamos a função list() para converter os resultados em uma lista.

Use a compreensão de lista para pesquisar uma lista de dicionários em Python

A compreensão de listas é uma maneira relativamente mais curta e muito elegante de criar listas que devem ser formadas com base nos valores fornecidos de uma lista já existente.

Podemos usar a compreensão de lista para retornar uma lista que produz os resultados da pesquisa da lista de dicionários em Python.

O código a seguir usa compreensão de lista para pesquisar uma lista de dicionários em 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])

Resultado:

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

Artigo relacionado - Python Dictionary

Artigo relacionado - Python List