Saltar al contenido

python – ¿Cómo imprimir la clave de un diccionario?

septiembre 29, 2021
apple touch icon@2

Estoy agregando esta respuesta porque una de las otras respuestas aquí (https://stackoverflow.com/a/5905752/1904943) está fechada (Python 2; iteritems), y el código presentado, si se actualiza para Python 3 según la solución alternativa sugerida en un comentario a esa respuesta, silenciosamente no devuelve todos los datos relevantes.


Fondo

Tengo algunos datos metabólicos, representados en un gráfico (nodos, bordes, …). En una representación de diccionario de esos datos, teclas son de la forma (604, 1037, 0) (que representa los nodos de origen y destino, y el tipo de borde), con valores de la forma 5.3.1.9 (que representa los códigos de enzimas CE).

Encuentra claves para valores dados

El siguiente código encuentra correctamente mis claves, dados valores:

def k4v_edited(my_dict, value):
    values_list = []
    for k, v in my_dict.items():
        if v == value:
            values_list.append(k)
    return values_list

print(k4v_edited(edge_attributes, '5.3.1.9'))
## [(604, 1037, 0), (604, 3936, 0), (1037, 3936, 0)]

mientras que este código devuelve solo la primera (posiblemente varias claves coincidentes):

def k4v(my_dict, value):
    for k, v in my_dict.items():
        if v == value:
            return k

print(k4v(edge_attributes, '5.3.1.9'))
## (604, 1037, 0)

El último código, ingenuamente actualizado reemplazando iteritems con items, no regresa (604, 3936, 0), (1037, 3936, 0.

close