Agrupar Elementos de Lista

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Em Python, podemos agrupar os elementos de uma lista com base em uma função fornecida. Isso pode ser útil em muitas situações, como quando queremos agrupar uma lista de palavras por seu comprimento ou uma lista de números por sua paridade. Neste desafio, você será solicitado a escrever uma função que agrupa os elementos de uma lista com base em uma função fornecida.

Agrupar Elementos de Lista

Escreva uma função group_by(lst, fn) que recebe uma lista lst e uma função fn como argumentos e retorna um dicionário onde as chaves são os resultados da aplicação de fn aos elementos de lst e os valores são listas de elementos de lst que produzem a chave correspondente quando fn é aplicada a eles.

Por exemplo, se tivermos uma lista de números [6.1, 4.2, 6.3] e quisermos agrupá-los pela sua parte inteira, podemos usar a função floor do módulo math como a função de agrupamento. A saída esperada seria {4: [4.2], 6: [6.1, 6.3]}.

from collections import defaultdict

def group_by(lst, fn):
  d = defaultdict(list)
  for el in lst:
    d[fn(el)].append(el)
  return dict(d)
from math import floor

group_by([6.1, 4.2, 6.3], floor) ## {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) ## {3: ['one', 'two'], 5: ['three']}

Resumo

Neste desafio, você aprendeu como agrupar os elementos de uma lista com base em uma função fornecida. Você também escreveu uma função que faz isso usando um dicionário para armazenar os grupos e um loop para preenchê-los. Esta é uma técnica útil que pode ser aplicada em muitos contextos diferentes.