Pesquise uma lista de dicionários em Python
-
Use a função
next()
para pesquisar uma lista de dicionários em Python -
Pesquise uma lista de dicionários com a função
filter()
em Python - Use a compreensão de lista para pesquisar 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}
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.
LinkedInArtigo relacionado - Python Dictionary
- Como verificar se uma chave existe em um dicionário em Python
- Converter um dicionário em uma lista em Python
- Como obter todos os arquivos de um diretório
- Encontrar o Valor Máximo no Dicionário Python
- Como Ordenar um Dicionário Python por Valor
- Como fundir dois dicionários em Python 2 e 3