Apéndice M — Conversión entre estructuras de datos.

Objetivo. Describir cómo se pueden realizar conversiones entre estructuras de datos.

M.1 Transformación entre colecciones

Es posible convertir una estructura de datos en otra. Veamos varios ejemplos:

M.1.1 listas \(\to\) tuplas

lista = ['a', 'b', 'c'] # Definición de una lista
tupla_l = tuple(lista)  # Conversión a tupla

print(lista, type(lista), id(lista))
print(tupla_l, type(tupla_l), id(tupla_l))
['a', 'b', 'c'] <class 'list'> 2428044211840
('a', 'b', 'c') <class 'tuple'> 2428044323520

M.1.2 listas \(\to\) conjuntos

lista = ['a', 'b', 'c', 'a'] # Definición de una lista
conj_l = set(lista)          # Conversión a conjunto

print(lista, type(lista), id(lista))
print(conj_l, type(conj_l), id(conj_l))
['a', 'b', 'c', 'a'] <class 'list'> 2428044403136
{'c', 'b', 'a'} <class 'set'> 2428044362688

Observa que en esta transformación el conjunto elimina los elementos repetidos.

M.1.3 listas \(\to\) diccionarios

key_l = ['a','b','c','d', 'e'] # Lista de claves
val_l = [1, 2, 3, 4, 5]        # Lista de valores
dicc = dict(zip(key_l, val_l)) # Construcción de un diccionario

print(key_l)
print(val_l)
print(dicc, type(dicc), id(dicc))
['a', 'b', 'c', 'd', 'e']
[1, 2, 3, 4, 5]
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} <class 'dict'> 1226050079104

M.1.4 tuplas \(\to\) listas

tupla = (1,2,3,4)     # Definición de una tupla
lista_t = list(tupla) # Conversión a lista

print(tupla, type(tupla), id(tupla))
print(lista_t, type(lista_t), id(lista_t))
(1, 2, 3, 4) <class 'tuple'> 1226049799968
[1, 2, 3, 4] <class 'list'> 1226050079488

M.1.5 tuplas \(\to\) conjuntos

tupla = (1,2,3,1,2) # Definición de una tupla
conj_t = set(tupla) # Conversión a conjunto

print(tupla, type(tupla), id(tupla))
print(conj_t, type(conj_t), id(conj_t))
(1, 2, 3, 1, 2) <class 'tuple'> 1226049806848
{1, 2, 3} <class 'set'> 1226050029824

Observa que en esta transformación el conjunto elimina los elementos repetidos.

M.1.6 tuplas \(\to\) diccionarios

key_t = ('a','b','c','d', 'e') # Una tupla de claves
val_t = (1, 2, 3, 4, 5)        # Una tupla de valores
dicc = dict(zip(key_t, val_t)) # Construcción de un diccionario

print(key_t)
print(val_t)
print(dicc, type(dicc), id(dicc))
('a', 'b', 'c', 'd', 'e')
(1, 2, 3, 4, 5)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} <class 'dict'> 1226050087424

M.1.7 conjunto \(\to\) lista y tupla

conj = {1,2,3,'a','b','c'} # Definición de un conjunto
lista_s = list(conj)       # Conversión a lista
tupla_s = tuple(conj)      # Conversińo a tupla

print(conj, type(conj), id(conj))
print(lista_s, type(lista_s), id(lista_s))
print(tupla_s, type(tupla_s), id(tupla_s))
{1, 2, 3, 'b', 'a', 'c'} <class 'set'> 1226050028928
[1, 2, 3, 'b', 'a', 'c'] <class 'list'> 1226050076992
(1, 2, 3, 'b', 'a', 'c') <class 'tuple'> 1226008573312

M.1.8 conjuntos \(\to\) diccionarios

conj1 = {'a','b','c'} # Definición de un conjunto
conj2 = {1,2,3}       # Definición de otro conjunto
dicc = dict(zip(conj1, conj2)) # Construcción de un diccionario

print(conj1)
print(conj2)
print(dicc, type(dicc), id(dicc))
{'b', 'a', 'c'}
{1, 2, 3}
{'b': 1, 'a': 2, 'c': 3} <class 'dict'> 1226050091648

M.1.9 diccionarios \(\to\) listas, tuplas y conjuntos

dicc = {'x':3, 'y':4, 'z':5} # Definición de un diccionario

Conversión directa:

lista = list(dicc)   # Conversión a lista
tupla = tuple(dicc)  # Conversión a tupla
conj = set(dicc)     # Conversión a conjunto

print(dicc, type(dicc), id(dicc))
print(lista, type(lista), id(lista))
print(tupla, type(tupla), id(tupla))
print(conj, type(conj), id(conj))
{'x': 3, 'y': 4, 'z': 5} <class 'dict'> 1226050082688
['x', 'y', 'z'] <class 'list'> 1226050111232
('x', 'y', 'z') <class 'tuple'> 1226050004928
{'x', 'y', 'z'} <class 'set'> 1226050029376

Conversión desde las claves:

lista = list(dicc.keys())  # Conversión a lista
tupla = tuple(dicc.keys()) # Conversión a tupla
conj = set(dicc.keys())    # Conversión a conjunto

print(dicc, type(dicc), id(dicc))
print(lista, type(lista), id(lista))
print(tupla, type(tupla), id(tupla))
print(conj, type(conj), id(conj))
{'x': 3, 'y': 4, 'z': 5} <class 'dict'> 1226050082688
['x', 'y', 'z'] <class 'list'> 1226050113088
('x', 'y', 'z') <class 'tuple'> 1226050080640
{'x', 'y', 'z'} <class 'set'> 1226050030496

Conversión desde las valores:

lista = list(dicc.values())  # Conversión a lista
tupla = tuple(dicc.values()) # Conversión a tupla
conj = set(dicc.values())    # Conversión a conjunto

print(dicc, type(dicc), id(dicc))
print(lista, type(lista), id(lista))
print(tupla, type(tupla), id(tupla))
print(conj, type(conj), id(conj))
{'x': 3, 'y': 4, 'z': 5} <class 'dict'> 1226050082688
[3, 4, 5] <class 'list'> 1226050116224
(3, 4, 5) <class 'tuple'> 1226050006784
{3, 4, 5} <class 'set'> 1226050031392