es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Accediendo a un valor en una lista de diccionarios en Python, si otro valor en el diccionario existe.

Mi pregunta es una extensión de esto:

https://stackoverflow.com/questions/17117912/python-accessing-values-in-a-list-of-dictionaries

Quiero devolver solo los valores de los diccionarios si otro valor dado existe en ese diccionario.

En el caso del ejemplo dado en la pregunta vinculada, digamos que solo quiero devolver los valores de ‘Name’ si el valor de ‘Age’ en el diccionario es ’17’.

Esto debería producir como resultado solo:

'Suzy'
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para retornar solo los valores ‘Name’ de los diccionarios si otro valor dado existe en ese diccionario, podemos usar comprensión de listas con una condición ‘if’ para comprobar la existencia del valor dado en el diccionario.

    Para el caso específico mencionado en la pregunta enlazada, podemos hacer lo siguiente:

    data = [{'Name': 'Tom', 'Age': 17}, {'Name': 'Suzy', 'Age': 17}, {'Name': 'Bob', 'Age': 20}]
    given_value = 17
    names = [d['Name'] for d in data if 'Age' in d and d['Age'] == given_value]
    print(names)
    

    Salida:

    ['Tom', 'Suzy']
    

    Sin embargo, si queremos retornar solo el valor ‘Name’ para un valor de ‘Age’ específico, podemos modificar el código de la siguiente manera:

    data = [{'Name': 'Tom', 'Age': 17}, {'Name': 'Suzy', 'Age': 17}, {'Name': 'Bob', 'Age': 20}]
    given_age = 17
    names = [d['Name'] for d in data if 'Age' in d and d['Age'] == given_age]
    if names:
        print(names[0])
    

    Salida:

    Suzy
    

Comments are closed.