Cómo iterar sobre un diccionario en Python

    Introducción

    Los diccionarios son una de las estructuras de datos más utilizadas en todo el desarrollo de software, y por una buena razón. Nos permiten almacenar nuestros datos en claves ordenadas, pares de valores, lo que a su vez nos da la capacidad de, en promedio, acceder a nuestros datos en O(1) hora.

    Al usar un diccionario, es importante saber cómo repetirlo. No poder recuperar los datos almacenados los hace prácticamente inútiles.

    En este artículo, veremos cómo iterar a través de un diccionario de Python con todo tipo de iteradores y el for lazo.

    Usando el método keys ()

    Los diccionarios de Python tienen un método útil que nos permite iterar fácilmente a través de todas las claves inicializadas en un diccionario, keys().

    Tenga en cuenta que desde Python 3, este método no devuelve una lista, sino un objeto de vista. Un objeto de vista es exactamente como dice el nombre, una vista de algunos datos.

    Esto significa que podemos iterar a través de dichos datos sin problema, pero si realmente queremos almacenar la lista de claves, necesitamos materializarla. Lo cual se puede hacer fácilmente reenviando el objeto de vista proporcionado a un list constructor.

    Echemos un vistazo a cómo funciona todo:

    my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3}
    
    # Here we're just 'looking' at the keys,
    # we're not actually constructing a list 
    # out of them
    key_view = my_dict.keys()
    print("Key view:", key_view)
    print("Type:", type(key_view),end="nn")
    
    # Here we're materializing the keys
    # into a list ofo keys
    key_list = list(my_dict.keys())
    print("Key list:", key_list)
    print("Type: ", type(key_list),end="nn")
    
    # And as we can see, view can be easily be
    # used for iterating over a dictionary
    for key in my_dict.keys():
        print(key, ':', my_dict[key]) 
    

    Ejecutar el código nos da el siguiente resultado:

    Key view: dict_keys(['alpha', 'beta', 'gamma'])
    Type: <class 'dict_keys'>
    
    Key list: ['alpha', 'beta', 'gamma']
    Type:  <class 'list'>
    
    alpha : 5
    beta : 4
    gamma : 3 
    

    Una forma alternativa de hacer esto sería:

    my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3}
    
    for key in my_dict:
        print(key, ':', my_dict[key])
    

    Al usar el in palabra clave junto con un diccionario, el diccionario invoca su __iter__() método. Este método luego devuelve un iterador que se usa para ir implícitamente a través de las claves del diccionario proporcionado.

    Usando el método values ​​()

    Como el keys() método, el values() El método también devuelve un objeto de vista, pero en lugar de iterar a través de claves, itera a través de valores:

    my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3}
    
    # Inspecting the view of the values
    # in the dictionary
    key_list = list(my_dict.values())
    print("Value list:", key_list)
    print("Type: ", type(key_list), end="nn")
    
    for value in my_dict.values():
        print(value, end=" ")
    

    Ejecutar el código nos da el siguiente resultado:

    Value list: [5, 4, 3]
    Type:  <class 'list'>
    5 4 3 
    

    A diferencia del método anterior, este solo proporciona valores. Es útil cuando no le preocupan las claves.

    Usando el método items ()

    Como el keys() y values() métodos, el items() El método también devuelve un objeto de vista, pero en lugar de simplemente iterar a través de keys o values, itera a través de (key,value) pares.

    Echemos un vistazo a cómo funciona todo:

    my_dict = {'alpha': 5, 'beta': 4, 'gamma': 3}
    
    # Inspecting the view of the (key,value) pairs
    key_list = list(my_dict.items())
    print("(key,value) pair list:", key_list)
    print("Type: ", type(key_list), end="nn")
    
    for item in my_dict.items():
        print(item, end=" ")
    

    Ejecutar el código nos da el siguiente resultado:

    (key,value) pair list: [('alpha', 5), ('beta', 4), ('gamma', 3)]
    Type:  <class 'list'>
    ('alpha', 5) ('beta', 4) ('gamma', 3) 
    

    Para asignar inmediatamente tanto claves como valores simultáneamente, podemos usar el desempaquetado de tuplas y extraerlas usando variables para cada valor en una tupla:

    for key, value in my_dict.items():
        print(key,':',value)
    

    Es importante tener en cuenta que en versiones anteriores de Python 2 donde items(), keys()y values() devolvió una copia de los datos de un diccionario. Mientras que en Python 3, devuelven un objeto de vista.

    Estos son más efectivos ya que proporcionan una vista dinámica y, además, si se realizan cambios en el diccionario original, se reflejarán inmediatamente en el objeto de vista (y viceversa).

    Conclusión

    En este artículo, hemos cubierto diferentes formas de iterar sobre un diccionario de Python. Esto incluye el keys(), values() y items() métodos, con un for lazo.

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *