Uno de los últimos ejercicios del curso de programación fundamental con Python trata de invertir un diccionario. (Diccionario = colección)
Como sabéis, las colecciones tiene una clave y un valor. El valor se puede repetir, pero la clave no.
Así que si tenemos una colección como esta:
nom_raza = ["Fido": "Perro", "Tom": "Gato", "Pluto": "Perro", "Pixie": "Ratón", "Jinks": "Gato", "Jerry": "Ratón"]
Si quisiéramos invertirla nos encontraríamos con claves iguales. No podríamos tener:
raza_nom = ["Perro": "Fido" , "Perro":"Pluto" , ....]
Bien. ¿ Cómo lo solucionamos ?.
Una solución posible seria tener una clave común y como valor un array donde almacenar todos los valores que
pertenecen a la misma clave.
En Python la salida seria algo como esto:(Lo diccionarios en Python usan llaves para delimitarlo)
Citar:
El código del ejemplo me ha quedado así:
Public Sub Main()
Dim nom_raza As New Collection
Dim raza_nom As New Collection
Dim animal As String
Dim clave As String
Dim anombres As String[]
nom_raza = [
"Fido": "Perro",
"Tom": "Gato",
"Pluto": "Perro",
"Pixie": "Ratón",
"Jinks": "Gato",
"Jerry": "Ratón"]
For Each animal In nom_raza
clave = nom_raza.Key
If Not (raza_nom.Exist(animal)) Then
anombres = New String[]
anombres.Add(clave)
raza_nom[animal] = anombres
Else
raza_nom[animal].Add(clave)
Endif
Next
End
Dim nom_raza As New Collection
Dim raza_nom As New Collection
Dim animal As String
Dim clave As String
Dim anombres As String[]
nom_raza = [
"Fido": "Perro",
"Tom": "Gato",
"Pluto": "Perro",
"Pixie": "Ratón",
"Jinks": "Gato",
"Jerry": "Ratón"]
For Each animal In nom_raza
clave = nom_raza.Key
If Not (raza_nom.Exist(animal)) Then
anombres = New String[]
anombres.Add(clave)
raza_nom[animal] = anombres
Else
raza_nom[animal].Add(clave)
Endif
Next
End
Voy a mostraros lo que muestra según voy ejecutando el ejemplo.
En la colección tenemos esto:
Si hacemos click en el Valor de la clave perro vemos:
Y así, igual con gato y ratón.
Aquí tenéis el ejemplo. He añadido un stop para que podais ver el contenido de la colección raza_nom.
Ya me gustaría no tardar tanto tiempo para hacer estas cosas.
Y este es el código que hace lo mismo pero en Python:
nom_raza = {
'Fido' : 'Perro',
'Tom' : 'Gato',
'Pluto' : 'Perro',
'Pixie' : 'Raton',
'Jinks' : 'Gato',
'Jerry' : 'Raton'}
raza_nom = {}
for animal in nom_raza:
tipo = nom_raza[animal]
if not (tipo in raza_nom):
raza_nom[tipo] = [animal]
else:
raza_nom[tipo].append(animal)
print (raza_nom)
'Fido' : 'Perro',
'Tom' : 'Gato',
'Pluto' : 'Perro',
'Pixie' : 'Raton',
'Jinks' : 'Gato',
'Jerry' : 'Raton'}
raza_nom = {}
for animal in nom_raza:
tipo = nom_raza[animal]
if not (tipo in raza_nom):
raza_nom[tipo] = [animal]
else:
raza_nom[tipo].append(animal)
print (raza_nom)
Saludos
invertir_coleccion.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | invertir_coleccion.tar.gz | |
Tamaño: | 5.1 KB | |
Descargado: | 19 veces |
invertir_coleccion.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | invertir_coleccion.tar.gz | |
Tamaño: | 5.1 KB | |
Descargado: | 19 veces |
invertir_coleccion.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | invertir_coleccion.tar.gz | |
Tamaño: | 5.1 KB | |
Descargado: | 19 veces |