0% encontró este documento útil (0 votos)
0 vistas7 páginas

Diccionarios Python

El documento es una guía completa sobre diccionarios en Python, cubriendo su creación, acceso, modificación, y métodos relacionados. Se discuten conceptos como combinaciones, comprensiones, y copias superficiales y profundas, así como módulos útiles como defaultdict y Counter. También se incluye una tabla de complejidad y recomendaciones sobre cuándo no usar diccionarios.

Cargado por

romarioanchaise
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas7 páginas

Diccionarios Python

El documento es una guía completa sobre diccionarios en Python, cubriendo su creación, acceso, modificación, y métodos relacionados. Se discuten conceptos como combinaciones, comprensiones, y copias superficiales y profundas, así como módulos útiles como defaultdict y Counter. También se incluye una tabla de complejidad y recomendaciones sobre cuándo no usar diccionarios.

Cargado por

romarioanchaise
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Diccionarios en Python

Guía completa de referencia

d = {"a": 1}
d["b"] = 2
>>> {'a': 1, 'b': 2}

Preparado por Romario


Universidad Continental — Arequipa

Agosto 2026
Diccionarios en Python Ing. de Sistemas

Contents

1 Introducción 2

2 Creación de diccionarios 2

3 Acceso a valores 2

4 Modificar y eliminar 2

5 Recorrer un diccionario 3

6 Combinar y actualizar diccionarios 3

7 Comprehensions de diccionario 3

8 Métodos completos 4

9 Copias: superficial vs profunda 4

10 Módulos relacionados 4
[Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
[Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
[Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
[Link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

11 Tabla resumen de complejidad 5

12 Cuándo NO usar diccionarios 6

13 Cheat sheet final 6

1
Diccionarios en Python Ing. de Sistemas

1 Introducción
Los diccionarios (dict) son estructuras de datos que almacenan pares clave-valor. Son
mutables, y desde Python 3.7 mantienen el orden de inserción de forma garantizada.
Internamente se implementan como tablas hash, lo que hace que la búsqueda por clave
sea muy eficiente.

1 persona = {"nombre": "Ana", "edad": 25, "ciudad": "Arequipa"}


2 print(type(persona)) # <class 'dict'>

Nota: Las claves de un diccionario deben ser hashables (inmutables): strings,


números, tuplas. No pueden ser listas, sets, ni otros diccionarios.

2 Creación de diccionarios

1 vacio = {}
2 vacio2 = dict()
3 d = {"a": 1, "b": 2}
4 d2 = dict(a=1, b=2)
5 d3 = dict(zip(["a", "b", "c"], [1, 2, 3]))
6 d4 = [Link](["a", "b", "c"], 0) # {'a':0,'b':0,'c':0}
7 por_comprension = {k: v for k, v in [("a", 1), ("b", 2)]}
8 anidado = {"usuario": {"nombre": "Ana", "activo": True}}

[Link](claves, valor) es la forma más rápida de crear un diccionario con el


mismo valor inicial para todas las claves — muy útil para contadores o flags.

3 Acceso a valores

1 d = {"a": 1, "b": 2}
2
3 d["a"] # 1
4 d["z"] # KeyError! la clave no existe
5 [Link]("a") # 1
6 [Link]("z") # None (no lanza error)
7 [Link]("z", 0) # 0 (valor por defecto)
8 "a" in d # True (verifica si la clave existe)
9 "a" in [Link]() # False (values no busca aqui)
10 1 in [Link]() # True

Cuidado: d["clave"] lanza KeyError si la clave no existe. Usa [Link]("clave") o


[Link]("clave", default) cuando no estés seguro de que la clave exista.

4 Modificar y eliminar

1 d = {"a": 1, "b": 2}
2
3 d["c"] = 3 # agrega nueva clave

2
Diccionarios en Python Ing. de Sistemas

4 d["a"] = 99 # actualiza clave existente


5 [Link]("d", 10) # crea "d"=10 solo si no existe
6 [Link]("a", 100) # no hace nada, "a" ya existe
7
8 del d["a"] # elimina la clave "a"
9 [Link]("b") # elimina y devuelve el valor
10 [Link]("z", None) # con default, evita KeyError
11 [Link]() # elimina el ultimo par insertado
12 [Link]() # vacia el diccionario

5 Recorrer un diccionario

1 d = {"a": 1, "b": 2, "c": 3}


2
3 for clave in d:
4 print(clave)
5

6 for clave in [Link]():


7 print(clave)
8
9 for valor in [Link]():
10 print(valor)
11

12 for clave, valor in [Link]():


13 print(clave, valor)

[Link](), [Link]() y [Link]() devuelven vistas dinámicas, no listas nuevas. Si


el diccionario cambia, la vista refleja el cambio automáticamente.

6 Combinar y actualizar diccionarios

1 d1 = {"a": 1, "b": 2}
2 d2 = {"b": 20, "c": 3}
3
4 [Link](d2) # d1 = {'a':1,'b':20,'c':3} (in−place)
5 [Link](x=5, y=6) # tambien acepta keywords
6

7 combinado = d1 | d2 # merge, Python 3.9+ (no muta d1 ni d2)


8 d1 |= d2 # merge in−place, Python 3.9+
9 combinado2 = {∗∗d1, ∗∗d2} # merge por unpacking (funciona en 3.5+)

7 Comprehensions de diccionario

1 cuadrados = {x: x∗∗2 for x in range(5)}


2 # {0:0, 1:1, 2:4, 3:9, 4:16}
3
4 filtrado = {k: v for k, v in [Link]() if v > 1}
5
6 invertido = {v: k for k, v in [Link]()} # intercambia clave <−> valor
7

8 mayusculas = {[Link](): v for k, v in [Link]()}

3
Diccionarios en Python Ing. de Sistemas

Al invertir un diccionario ({v: k for k, v in [Link]()}), si hay valores duplicados


se pierden datos: solo sobrevive el último par procesado para cada valor repetido.

8 Métodos completos
Método Descripción
get(k, default) Devuelve el valor de k o default si no existe
setdefault(k, default) Devuelve el valor de k, creándolo con default si
no existe
update(otro) Combina otro diccionario o iterable de pares in-
place
pop(k, default) Elimina k y devuelve su valor
popitem() Elimina y devuelve el último par insertado
clear() Vacía el diccionario
copy() Copia superficial (shallow)
keys() Vista de las claves
values() Vista de los valores
items() Vista de los pares (clave, valor)
fromkeys(iter, v) Crea un diccionario nuevo desde un iterable de
claves

9 Copias: superficial vs profunda

1 import copy
2
3 original = {"datos": [1, 2, 3]}
4
5 superficial = [Link]() # o dict(original)
6 profunda = [Link](original)
7
8 superficial["datos"].append(4)
9 print(original) # {'datos': [1,2,3,4]} <− se modifico!
10
11 profunda["datos"].append(5)
12 print(original) # {'datos': [1,2,3,4]} <− no se modifico

10 Módulos relacionados
10.1 [Link]

1 from collections import defaultdict


2
3 dd = defaultdict(list)
4 dd["frutas"].append("manzana") # no lanza KeyError, crea la lista sola
5 dd["frutas"].append("pera")
6 print(dd) # {'frutas': ['manzana', 'pera']}
7
8 dd_num = defaultdict(int)
9 dd_num["contador"] += 1 # arranca en 0 automaticamente

4
Diccionarios en Python Ing. de Sistemas

10.2 [Link]

1 from collections import Counter


2
3 c = Counter("banana")
4 # Counter({'a': 3, 'n': 2, 'b': 1})
5
6 c.most_common(2) # [('a', 3), ('n', 2)]
7 c["a"] # 3
8 [Link]("ana") # suma mas ocurrencias
9 c + Counter("ban") # suma dos Counters

10.3 [Link]

1 from collections import OrderedDict


2
3 od = OrderedDict()
4 od["z"] = 1
5 od["a"] = 2
6 od.move_to_end("z") # mueve "z" al final
7 # Desde Python 3.7 los dict normales ya mantienen el orden,
8 # pero OrderedDict ofrece metodos extra como move_to_end()

10.4 [Link]

1 from collections import ChainMap


2
3 defaults = {"color": "azul", "tamano": "M"}
4 usuario = {"color": "rojo"}
5
6 config = ChainMap(usuario, defaults)
7 config["color"] # 'rojo' (busca primero en usuario)
8 config["tamano"] # 'M' (cae al segundo dict)

ChainMap combina varios diccionarios en una sola vista sin copiar los datos — ideal
para manejar configuraciones con capas (defaults + overrides de usuario).

11 Tabla resumen de complejidad


Operación Complejidad
d[k] (lectura) O(1) promedio
d[k] = v (escritura) O(1) promedio
k in d O(1) promedio
del d[k] O(1) promedio
len(d) O(1)
[Link]() O(n)
recorrer todo el dict O(n)

5
Diccionarios en Python Ing. de Sistemas

El ”O(1) promedio” asume buena distribución de hashes. En el peor caso teórico


(muchas colisiones) puede degradar a O(n), pero en la práctica esto casi nunca ocurre
con las claves típicas (strings, números).

12 Cuándo NO usar diccionarios


• Si necesitas mantener elementos ordenados por valor constantemente → consid-
era una lista de tuplas ordenada o heapq

• Si solo necesitas verificar pertenencia sin asociar un valor → set

• Si las claves son enteros consecutivos desde 0 → una list suele ser más simple y
rápida

• Si necesitas inmutabilidad total → [Link] (vista de solo lectura de


un dict)

• Si necesitas structs con atributos fijos y tipados → dataclass o NamedTuple

13 Cheat sheet final

# Lo que se usa el 90% del tiempo:


[Link](k, default)
[Link](k, default)
[Link](otro)
[Link](k, default)
[Link]() # recorrer clave y valor
{k: v for k, v in [Link]() if cond} # comprehension
k in d # pertenencia
defaultdict(list), Counter(iterable)

Documento generado para uso académico — Ing. de Sistemas

También podría gustarte