CodeGym /Cursos /Python SELF ES /Colección Dictionary

Colección Dictionary

Python SELF ES
Nivel 11 , Lección 1
Disponible

1.1 Diccionario y sus propiedades

Diccionario (dictionary) en Python es una colección ordenada de pares clave-valor, donde cada clave es única. Los diccionarios son uno de los tipos de datos más flexibles y potentes en Python, utilizados para almacenar y gestionar datos. Los usaremos muy a menudo, prácticamente tan a menudo como las listas. Pronto te darás cuenta de ello :)

Propiedades principales de los diccionarios:

1. Claves únicas

Cada clave en un diccionario debe ser única. Si se añade al diccionario un par clave-valor con una clave que ya existe, el valor antiguo será reemplazado por el nuevo. Por ejemplo, si quieres almacenar datos sobre estudiantes y usas sus identificadores como claves:


students = {"123": "John", "124": "Alice", "123": "Mike"}
print(students)  # Mostrará: {'123': 'Mike', '124': 'Alice'}

2. Orden

¡Importante! Hasta Python 3.7, los diccionarios eran colecciones desordenadas, es decir, el orden de los elementos no estaba garantizado. Desde Python 3.7, los diccionarios mantienen el orden de adición de los elementos, pero este aspecto no es parte obligatoria de la especificación del lenguaje hasta la versión Python 3.8, donde se convirtió en estándar.

Esto fue hace 5 años. Estamos estudiando Python basado en la versión 3.12 así que puedes considerar un diccionario como un conjunto ordenado de elementos.

3. Mutabilidad

Los diccionarios son mutables, lo que significa que puedes añadir, cambiar o eliminar elementos después de crear el diccionario. Por ejemplo, añadamos la dirección de un estudiante:


student = {"name": "John", "age": 20}
student["address"] = "123 Main St"
print(student)  # Mostrará: {'name': 'John', 'age': 20, 'address': '123 Main St'}

4. Eficiencia

Los diccionarios están optimizados para búsquedas rápidas, adiciones y eliminaciones de pares clave-valor. En promedio, las operaciones de búsqueda, adición y eliminación se realizan en tiempo constante, O(1). Qué es la complejidad de algoritmos lo aprenderás más adelante cuando exploremos temas de "Algoritmos y estructuras de datos".

5. Claves y valores

Las claves en un diccionario pueden ser de cualquier tipo de datos inmutable, como cadenas, números o tuplas. Los valores pueden ser de cualquier tipo de datos, incluidos otros diccionarios.

6. Métodos de acceso y modificación

Los diccionarios admiten varios métodos para acceder a los elementos, añadir, modificar y eliminar pares clave-valor. Algunos de estos métodos incluyen get(), keys(), values(), items(), update(), pop(), y otros. Más detalles en las próximas conferencias.

7. Recorrido de elementos

Puedes recorrer las claves, valores o pares clave-valor en un diccionario usando ciclos. Esto permite realizar fácilmente operaciones sobre los elementos del diccionario. Por ejemplo:


student = {"name": "John", "age": 20, "address": "123 Main St"}
for key, value in student.items():
    print(f"{key}: {value}")

La salida será:

name: John
age: 20
address: 123 Main St

8. Hashabilidad de las claves

Las claves en un diccionario deben ser hashables (del inglés hash). Esto significa que las claves deben tener un valor hash que no cambie a lo largo de su vida. El valor hash se obtiene mediante una función hash, un algoritmo que transforma datos de entrada de longitud arbitraria en un valor de salida de longitud fija. A este valor se le llama valor hash o código hash. Los tipos de datos inmutables, como cadenas, números y tuplas, son hashables y pueden utilizarse como claves.

Aprenderemos más sobre funciones hash y hashabilidad en el tema "Algoritmos y estructuras de datos".

1.2 Creación de un diccionario usando {}

Los diccionarios en Python se pueden crear de varias formas. Aquí están los diferentes métodos para crear un objeto diccionario con ejemplos:

Uso de llaves {}

La forma más común de crear un diccionario es usando llaves con pares clave-valor, separados por comas. La propia par clave-valor se separa por dos puntos.


# Creación de un diccionario vacío
empty_dict = {}

# Creación de un diccionario con elementos
person = {
    "name": "John",
    "age": 30,
    "city": "New York"
}
print(type(person))
print(person)

¡Importante! La creación de un diccionario se parece a la creación de un conjunto. Puedes incluso considerar un diccionario como un conjunto, compuesto por claves, a las que se les asignan valores.

Si en las llaves simplemente se enumeran las "claves", se crea un conjunto, si después de las claves hay dos puntos y se indican valores, se crea un diccionario. Las llaves vacías – siempre es un diccionario.


# Creación de un diccionario vacío
empty_dict = {}

# Creación de un conjunto con elementos
unique_items = {
    "name",
    "age",
    "city"
}
print(type(unique_items))
print(unique_items)

1.3 Creación de un diccionario usando la función dict()

La función dict() se puede utilizar para crear un diccionario a partir de una secuencia de pares clave-valor, así como de argumentos nombrados.

Ejemplo con una secuencia de pares clave-valor:


# Creación de un diccionario a partir de una lista de tuplas
person = dict([("name", "John"), ("age", 30), ("city", "New York")])
print(person)

Ejemplo con argumentos nombrados. No se necesitan paréntesis adicionales aquí:


# Creación de un diccionario con argumentos nombrados
person = dict(name="John", age=30, city="New York")
print(person)

Uso del método dict.fromkeys()

El método fromkeys() crea un diccionario con las claves dadas y un valor por defecto.


# Creación de un diccionario con claves y valor por defecto
keys = ["name", "age", "city"]
default_value = None
person = dict.fromkeys(keys, default_value) 
print(person)

El diccionario tendrá tres claves, pero todas ellas contarán con un único valor.

1.4 Creación de un diccionario a partir de variables existentes

Los diccionarios se pueden crear utilizando variables como claves y valores.


# Creación de un diccionario a partir de variables
name = "John"
age = 30
city = "New York"

person = {"name": name, "age": age, "city": city}
print(person)

1.5 Uso de generadores de diccionarios

Generadores de diccionarios permiten crear diccionarios utilizando estructuras cortas y concisas, similares a los generadores de listas.


# Creación de un diccionario usando un generador de diccionario
squares = {x: x**2 for x in range(1, 6)}
print(squares)

1.6 Acceso a valores en un diccionario

Para obtener un valor por clave, se utiliza la sintaxis []:


# Acceso a valores en un diccionario
person = {"name": "John", "age": 30, "city": "New York"}
print(person["name"])  # Mostrará: John

¡Importante! Si la clave no se encuentra, se producirá un error KeyError. Para evitar esto, se puede utilizar el método get(), que devuelve el valor por clave, si la clave existe, o None (u otro valor por defecto), si la clave no se encuentra.


# Uso del método get() para acceder a valores en un diccionario
person = {"name": "John", "age": 30, "city": "New York"}
print(person.get("name"))  # Mostrará: John
print(person.get("address", "Dirección no encontrada"))  # Mostrará: Dirección no encontrada

1.7 Modificación de valores en un diccionario

Los valores en un diccionario se pueden modificar accediendo a ellos por clave y asignando un nuevo valor.


# Modificación de valores en un diccionario
person = {"name": "John", "age": 30, "city": "New York"}
person["age"] = 31
print(person)  # Mostrará: {'name': 'John', 'age': 31, 'city': 'New York'}

1.8 Eliminación de elementos de un diccionario

Los elementos se pueden eliminar utilizando el operador del o el método pop().


# Eliminación de un elemento usando del
person = {"name": "John", "age": 30, "city": "New York"}
del person["age"]
print(person)  # Mostrará: {'name': 'John', 'city': 'New York'}

# Eliminación de un elemento usando pop()
person = {"name": "John", "age": 30, "city": "New York"}
age = person.pop("age")
print(person)  # Mostrará: {'name': 'John', 'city': 'New York'}
print(age)     # Mostrará: 30

1.9 Comprobación de la existencia de una clave en un diccionario

Puedes comprobar si una clave se encuentra en un diccionario utilizando el operador in.


# Comprobación de la existencia de una clave en un diccionario
person = {"name": "John", "age": 30, "city": "New York"}
print("name" in person)  # Mostrará: True
print("address" in person)  # Mostrará: False

1.10 Recorrido de elementos de un diccionario

Puedes recorrer claves, valores o pares clave-valor en un diccionario:


# Recorrido de claves de un diccionario
person = {"name": "John", "age": 30, "city": "New York"}
for key in person:
    print(key)

# Recorrido de valores de un diccionario
for value in person.values():
    print(value)

# Recorrido de pares clave-valor de un diccionario
for key, value in person.items():
    print(f"{key}: {value}")

1.11 Ejemplos de uso de diccionarios en tareas reales

Veamos algunos ejemplos de la vida real donde el uso de diccionarios puede ser útil:

Ejemplo 1: Conteo de frecuencia de palabras en un texto

Supongamos que tenemos un texto y queremos contar cuántas veces aparece cada palabra en ese texto.


text = "hello world hello"
word_count = {}
for word in text.split():
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1
print(word_count)  # Mostrará: {'hello': 2, 'world': 1}

Ejemplo 2: Almacenamiento de datos de estudiantes

Podemos usar un diccionario para almacenar datos de estudiantes, donde las claves serán sus identificadores y los valores son la información sobre ellos.


students = {
    "123": {"name": "John", "age": 20, "major": "Computer Science"},
    "124": {"name": "Alice", "age": 22, "major": "Mathematics"}
}
print(students["123"]["name"])  # Mostrará: John

Ejemplo 3: Agenda telefónica

Se pueden utilizar diccionarios para crear una agenda telefónica simple, donde las claves son los nombres y los valores son los números de teléfono.


phone_book = {
    "John": "123-456-7890",
    "Alice": "987-654-3210"
}
print(phone_book["Alice"])  # Mostrará: 987-654-3210
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION