Cómo combinar datos de tres listas en Python usando la función zip() y el ciclo for


La programación es una profesión que requiere de mucha práctica y constante investigación, siempre avanza, nos detenemos nosotros.

Estaba trabajando en un script donde tenía 3 listas con datos de usuarios. Cada lista contenía tuplas que agrupaba el nombre de un usuario y su dato correspondiente. De manera práctica, necesitaba unir las tres listas para que cada tupla agrupara todos los datos de cada usuario. Veamos un ejemplo de las listas:


lista_1 = [('usuario_1', 'dato_1'), ('usuario_2', 'dato_1'), ('usuario_3', 'dato_3')]

lista_2 = [('usuario_1', 'dato_2'), ('usuario_2', 'dato_2'), ('usuario_3', 'dato_3')]

lista_3 = [('usuario_1', 'dato_3'), ('usuario_2', 'dato_2'), ('usuario_3', 'dato_3')]

Como vemos son tres variables que guardan listas de tuplas, que contienen datos de los usuario 1, usuario 2 y usuario 3. La idea es crear una sola, lista agrupando los datos de cada usuario para importarla y poder manipularlos con mayor facilidad.

Ahora crearemos una nueva variables que contendrá una lista vacía en donde cargaremos los datos agrupados:

nueva_lista = [] 

Para resolver este problema nos apoyaremos en la función zip() para iterar simultáneamente sobre las tres listas y extraer los elementos correspondientes. Luego verificamos que los usuarios son los mismos en las tres listas, si es cierto, agrega una tupla a la nueva lista. Esto requiere un ciclo for para recorrer todas las listas y cada posición en ellas.

for (usuario_1, dato_1), (usuario_2, dato_2), (usuario_3, dato_3) in zip(lista_1, lista_2, lista_3):
    if usuario_1 == usuario_2 == usuario_3:
        nueva_lista.append((usuario_1, dato_1, dato_2, dato_3))

Finalmente, imprimimos en pantalla la nueva lista:

print(nueva_lista)

Salida:

[('usuario_1', 'dato_1', 'dato_2', 'dato_3'), 
('usuario_2', 'dato_1', 'dato_2', 'dato_2'), 
('usuario_3', 'dato_3', 'dato_3', 'dato_3')]

Código fuente:

lista_1 = [('usuario_1', 'dato_1'), ('usuario_2', 'dato_1'), ('usuario_3', 'dato_3')]

lista_2 = [('usuario_1', 'dato_2'), ('usuario_2', 'dato_2'), ('usuario_3', 'dato_3')]

lista_3 = [('usuario_1', 'dato_3'), ('usuario_2', 'dato_2'), ('usuario_3', 'dato_3')]

nueva_lista = []

for (usuario_1, dato_1), (usuario_2, dato_2), (usuario_3, dato_3) in zip(lista_1, lista_2, lista_3):
    if usuario_1 == usuario_2 == usuario_3:
        nueva_lista.append((usuario_1, dato_1, dato_2, dato_3))

print(nueva_lista)


Espero que les sea de utilidad, si tiene otro método para resolver el problema, nos ayudaría mucho para seguir aprendiendo y compartiendo. Un abrazo.


Las imágenes son mías o capturas de pantalla tomadas por mí, a menos que se indiquen fuentes externas.


Discord: alberto0607#6813
Twitter: alberto_0607



0
0
0.000
3 comments
avatar

Congratulations @alberto0607! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You published more than 90 posts.
Your next target is to reach 100 posts.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Check out our last posts:

Our Hive Power Delegations to the April PUM Winners
The Hive Gamification Proposal
Support the HiveBuzz project. Vote for our proposal!
0
0
0.000