Python programación funcional con filter, map y sort

Python programación funcional con filter, map y sort

Algunos ejemplos básicos de python usando: filter, map y sort

Lista de ejemplo

rows = [ {"f1":"1","f2":"12","f3":"13","f4":"14","f5":"15",}, {"f1":"2","f2":"22","f3":"23","f4":"24","f5":"25",}, {"f1":"3","f2":"32","f3":"33","f4":"34","f5":"35",}, {"f1":"4","f2":"42","f3":"43","f4":"44","f5":"45",}, {"f1":"5","f2":"52","f3":"53","f4":"54","f5":"55",}, ]

filter(lambda row: ..., rows)

result = filter(lambda row: row.get("f4")=="24" or row.get("f4") == "44", rows) print(list(result)) # result [ {'f1': '2', 'f2': '22', 'f3': '23', 'f4': '24', 'f5': '25'}, {'f1': '4', 'f2': '42', 'f3': '43', 'f4': '44', 'f5': '45'} ]

map(lambda row: ..., rows)

result = map(lambda row: { "col1": row.get("f2"), "col2": row.get("f5"), "col3": row.get("f1"), }, rows) print(list(result)) # result [ {'col1': '12', 'col2': '15', 'col3': '1'}, {'col1': '22', 'col2': '25', 'col3': '2'}, {'col1': '32', 'col2': '35', 'col3': '3'}, {'col1': '42', 'col2': '45', 'col3': '4'}, {'col1': '52', 'col2': '55', 'col3': '5'} ]

rows.sort(key=fn)

Esta función no cumple con el paradigma funcional ya que no devuelve una nueva lista sino que la ordena (la modifica). Lo ideal hubiese sido que devuelva una nueva ordenada.

def by_f3(row): return row.get("f3") rows.sort(key=by_f3, reverse=True) print(list(rows)) # result [ {'f1': '5', 'f2': '52', 'f3': '53', 'f4': '54', 'f5': '55'}, {'f1': '4', 'f2': '42', 'f3': '43', 'f4': '44', 'f5': '45'}, {'f1': '3', 'f2': '32', 'f3': '33', 'f4': '34', 'f5': '35'}, {'f1': '2', 'f2': '22', 'f3': '23', 'f4': '24', 'f5': '25'}, {'f1': '1', 'f2': '12', 'f3': '13', 'f4': '14', 'f5': '15'} ]

Autor: Eduardo A. F.
Publicado: 14-11-2022 21:03