Wilberhg's blog

Filtrando Dicionário em uma Lista de Dicionários

Contextualizando

Vamos imaginar que temos uma lista com vários dicionários contendo dados de produtos e que por algum motivo, queremos pegar um desses dicionários que contenha produto de maior valor dentro dessa lista. Como podemos fazer isso?

Entendendo na prática

Vamos começar criando uma lista pequena contendo o código de barras e o preço de cada item:

lst = [{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]

Para darmos continuidade, iremos precisar criar uma função que nos permitirá "percorrer" todos os indíces da lista:

lambda x:x['price']

Com isso em "mãos", podemos evitar de usar list comprehension e conseguimos simplesmente aplicar a função ao método que busca o maior ou menor:

maxPricedItem = max(lst, key=lambda x:x['price'])
# ou
minPricedItem = min(lst, key=lambda x:x['price'])

Qual a grande "sacada" desse método?

  1. Usar o parâmetro key contido na função max e min e passar uma função (podendo ser def ou lambda);
  2. Diminuir a quantidade de variáveis alocadas em memória;
  3. A funcionalidade já traz o dicionário pronto de acordo com o filtro do método.

Referências bibliográficas:

#dict #filter #key #lambda #list #max #min