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 *