Skip to content

Instantly share code, notes, and snippets.

@mrroot5
Last active November 7, 2021 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrroot5/c96fd15256186c0368f8a94d346c7a7e to your computer and use it in GitHub Desktop.
Save mrroot5/c96fd15256186c0368f8a94d346c7a7e to your computer and use it in GitHub Desktop.
Python: utils listado de diccionarios. Keywords: python, python utils, list, list in dict, dict key in list, key in list dict, key, dict key, list dict key

Intro

Se pretende encontrar un clave dentro de un listado de disccionarios con Python.

Los dos ejemplos que veremos a continuación usando un generator expression o lambda function con filter son equivalentes.

Datos de ejemplo

people = [
  {"name": "Tom", "age": 10},
  {"name": "Mark", "age": 5},
  {"name": "Pam", "age": 7},
  {"name": "Tom", "age": 15}
]

Generator expression

Buscar por el valor de una key

next((item for item in people if item.get("name") == "Pam"), None)

Obtener el índice al buscar por el valor de una key

next((i for i, item in enumerate(people) if item.get("name") == "Pam"), None)

Buscar que exista una key

next((item for item in people if item.get"name")), None)

Lambda Functions

Usamos filter para obtener el dato que queremos pero este devuelve un generador por lo que tendremos que convertirlo a list si queremos usar una lista.

Buscar todas las ocurrencias del valor de una key

list(filter(lambda person: person.get('name') == 'Pam', people))

Buscar todas las ocurrencias y obtener la primera sin convertir a list

next(filter(lambda person: person.get('name') == 'Pam', people), None)

Fuentes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment