Diccionarios en Python 3

Los diccionarios en Python son una estructura de datos que al igual que las listas y tuplas, almacenan valores pero con una peculiaridad, los elementos no son ordenados y constan de una clave con su valor.

Los diccionarios se crean con un paréntesis {} separando cada elemento compuesto por su key:value.

Se denomina key a la clave y value a su valor. Un punto importante es que no pueden haber dos keys iguales y deben de ser únicas, es decir, no debería de ser modificado ya que conllevaría a un error. Si embargo el value puede tener el mismo tipo de dato que otro y puede ser modificado.

Creando un diccionario

Los diccionarios al igual que las listas pueden ser heterogéneos y mutables como se explica en listas y estructuras de datos en Python 3. Implementan una técnica llamada hashing que permite acceder a un valor de forma rápida.

Veamos en el siguiente ejemplo un diccionario en el que hemos almacenado una ficha de usuario:

dic = {
    "name": "Elena",
    "edad": 34,
    "dni": 43335463
}
# Imprime todos los elementos
print(dic)
# Salida
{'name': 'Elena', 'edad': 34, 'dni': 43335463}

También podemos obtener un valor específico de nuestro diccionario por medio de su clave (key):

dic = {
    "name": "Elena",
    "edad": 34,
    "dni": 43335463
}
# La key dni nos devolverá su valor
print(dic["dni"])
# Salida
43335463

Como hemos podido observar los diccionarios no tienen un orden como las listas, cuya principal ventaja es que podemos acceder a una posición específica, sino que lo hacemos mediante su clave.

Recorrer el diccionario con un bucle

Para recorrer un diccionario basta con hacerlo con un bucle for ya que el diccionario en sí, es una estructura iterable.

Si aprovechamos los ejemplos anteriores podemos imprimir nuestro diccionario de una forma más visual como parte de una consulta. Utilizamos un bucle for y el método items() del que hablaremos más adelante:

dic = {
    "name": "Elena",
    "age": 34,
    "dni": 43335463
}
# Separamos la key del value
for key, val in dic.items():
    print(key, ":", val)

De esta forma su salida es mucho más visible y elegante.

# Salida
name : Elena
age : 34
dni : 43335463

El método items() también es capaz de recorrer un diccionario sin utilizar un bucle for. Lo hace recorriendo una lista de tuplas con forma de key: value en cada elemento del diccionario:

dic = {
    "name": "Roger",
    "surname": "Federer",
    "rank": 5
}
dic.items()
# Salida
dict_items([('name', 'Roger'), ('surname', 'Federer'), ('rank', 5)])

La función dict

La función dict() es un constructor que nos permite crear diccionarios de una forma rápida. Cuando la función no tiene ningún argumento crea un diccionario vacio:

dic = dict()
# Salida
{}

Podemos ir agregando elementos a nuestro diccionario con el método .setdefault() de la siguiente forma:

dic = dict()
dic.setdefault("name", "LeBron James")
# Salida
{'name': 'LeBron James'}

Métodos de los diccionarios

A continuación vamos a ver algunos de los métodos del diccionario:

  • Método de agregación
  • Método de clonación
  • Método de recuperación
  • Método de eliminación

Método get()

Recibe como parámetro una clave y devuelve su valor. Si no lo encuentra, devuelve none.

dicc = {"a": 1, "b": 2, "c": 3}
dicc.get("b")
# Salida
2

Método items()

Devuelve una lista de tuplas que se componen de dos elementos: clave: valor

dicc = dict({
            "Musica": "Trance",
            "Nombre": "Paul Van Dyk",
            "Género": "DJ",
            "Debut": 1991
        })
dicc.items()
# Salida
[('Musica', 'Trance'), ('Nombre', 'Paul Van Dyk'), ('Género', 'DJ'), ('Debut', 1991)]

Método keys()

Devuelve una lista cuyos elementos son las claves de nuestro diccionario.

dicc = dict({
            "Musica": "Trance",
            "Nombre": "Paul Van Dyk",
            "Género": "DJ",
            "Debut": 1991
        })
dicc.keys()
# Salida
['Musica', 'Nombre', 'Género', 'Debut']

Método values()

Devuelve una lista cuyos elementos son los valores de nuestro diccionario.

dicc = dict({
            "Musica": "Trance",
            "Nombre": "Paul Van Dyk",
            "Género": "DJ",
            "Debut": 1991
        })
dicc.values()
# Salida
['Trance', 'Paul Van Dyk', 'DJ', 1991]

Método setdefault()

Puede funcionar de dos formas. La primera como get(), y la segunda nos permite agregar un elemento a nuestro diccionario.

dicc = {"a": 1, "b": 2, "c": 3}
dicc.setdefault("d", 4)
# Salida
4

Método update()

Recibe como parámetro otro diccionario. En el caso de que las claves sean iguales, actualiza el valor de la clave repetida. Si no existen claves iguales, el par clave: valor se agrega al diccionario.

dicc_1 = {"a": 1, "b": 2, "c": 3}
dicc_2 = {"c": 1, "d": 3, "e": 5, "a": 12}
dicc_1.update(dicc_2)
dicc_1
# Salida dicc_1
{'a': 12, 'b': 2, 'c': 1, 'd': 3, 'e': 5}

Método fromkeys()

Este método recibe como parámetro un iterable y un valor y devuelve un diccionario, cuyas claves son los elementos del iterable con el valor insertado. Si el valor se deja en blanco nos devolverá none.

dicc = dict.fromkeys(["a", "b", "c", "d", "e"], 2)
dicc
# Salida
{'a': 2, 'b': 2, 'c': 2, 'd': 2, 'e': 2}
# Parámetro en blanco
{'a': None, 'b': None, 'c': None, 'd': None, 'e': None}

Método copy()

Realiza una copia del diccionario original.

dicc = {"a": 1, "b": 2, "c": 3}
dicc_1 = dicc.copy()
dicc_1
# Salida
{'a': 1, 'b': 2, 'c': 3}

Método pop()

Recibe como parámetro una clave, la elimina y devuelve su valor.

dicc = {'a': 1, 'b': 2, 'c': 3}
dicc.pop("b")
# Salida
2
# Elementos del diccionario
{'a': 1, 'c': 3}

Método clear()

Elimina todo los elementos del diccionario dejándolo vacío.

dicc = {'a': 1, 'c': 3}
dicc.clear()
# Salida
{}

Conclusión

Hemos visto cómo crear diccionarios y los métodos más utilizados para programar de forma más sencilla. No te pierdas otros artículos sobre Python y aprende el lenguaje de la IA, machine learning y de la ciencia de datos.

Sigue el tutorial

Conjuntos o sets en Python 3

¿Te ha parecido útil?