Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Crear una lista con objetos (diccionarios en una lista?)

Estas en el tema de Crear una lista con objetos (diccionarios en una lista?) en el foro de Python en Foros del Web. Hola! Estoy empezando con Python y tengo que hacer un programa que me tiene bloqueado. Necesitaria tener una estructura tipica de C, por ejemplo: struct ...
  #1 (permalink)  
Antiguo 13/03/2013, 06:54
 
Fecha de Ingreso: marzo-2013
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Crear una lista con objetos (diccionarios en una lista?)

Hola!

Estoy empezando con Python y tengo que hacer un programa que me tiene bloqueado.

Necesitaria tener una estructura tipica de C, por ejemplo:

struct objeto
{
int a
int b
char c
}

y luego crearme un Array de ese objeto, asi voy guardando en cada celda un objeto y luego puedo recorrerlos, buscarlos, modificarlos, etc....


Creo que lo mas parecido a crear una estructura auxiliar con una serie de campos seria generar diccionarios.

Luego cada diccionario con sus campos ir añadiendolos a una lista, pero el problema sería como los localizo luego?? (no me vale el índice, me gustaria identificar el elemento de la lista por el campo a por ejemplo)


Si existe otra forma mas sencilla de hacer lo mismo tambien me valdria, es una idea que habia pensado para hacerlo simplemente...

Gracias por todo de antemano
  #2 (permalink)  
Antiguo 13/03/2013, 08:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

Puedes usar clases para este ejemplo. (Asumiendo que usas python 2.x)

Código Python:
Ver original
  1. class Objeto:
  2.     def __init__(self, a, b, c):
  3.         self.a = a
  4.         self.b = b
  5.         self.c = c
  6.  
  7.     def __str__(self):
  8.         return "a=%s b=%s c=%s" % (self.a, self.b, self.c)
  9.  
  10. obj1 = Objeto(1, 2, 'a')
  11. obj2 = Objeto(3, 4, 'b')
  12. obj3 = Objeto(5, 6, 'c')
  13. obj4 = Objeto(7, 8, 'd')
  14.  
  15. l = [obj1, obj2, obj3, obj4]
  16.  
  17. for obj in l:
  18.     print obj.a, obj.b, obj.c
  19.     print obj
  20.     print
  #3 (permalink)  
Antiguo 13/03/2013, 12:31
 
Fecha de Ingreso: marzo-2013
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

Muchas gracias por la contestacion, una duda me ha creado esta solución con crear un objeto...

La clase que creo se tiene que llamar objeto.py?

Lo digo porque me interesaria tener varias estructuras e ir recorriendolas para encontrar coincidencias,etc.... y cada objeto tendria unos campos distintos.

Es decir, puedo definir varias clases con campos distintos para tener una lista por cada tipo de objeto en el mismo archivo.py?

No tiene nada que ver pero como ejemplo seria un programa estilo biblioteca, donde necesito guardar la lista de libros por un lado
(String titulo, string autor, Int año....)

los usuarios por otro (String Id, Int Edad....)

y los alquileres por otro (Libro, Usuario, Date fecha...)


De manera que tendria 3 clases que listar en 3 listas distintas y poder ir recorriendolas, añadir, modificar, etc..... se puede definir y crear 3 tipos de objetos distintos en el mismo fichero.py?
  #4 (permalink)  
Antiguo 14/03/2013, 00:48
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

Cita:
Iniciado por chustuoso2013 Ver Mensaje
La clase que creo se tiene que llamar objeto.py?
No, el nombre del archivo (modulo) no esta relacionado con el nombre la clase o clases que pueda contener.

Cita:
Iniciado por chustuoso2013 Ver Mensaje
Es decir, puedo definir varias clases con campos distintos para tener una lista por cada tipo de objeto en el mismo archivo.py?
Si, si puedes.

Cita:
Iniciado por chustuoso2013 Ver Mensaje
De manera que tendria 3 clases que listar en 3 listas distintas y poder ir recorriendolas, añadir, modificar, etc..... se puede definir y crear 3 tipos de objetos distintos en el mismo fichero.py?
Si.
  #5 (permalink)  
Antiguo 14/03/2013, 08:31
 
Fecha de Ingreso: marzo-2013
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

Muchas gracias por toda la ayuda, una ultima duda


Siguiendo el ejemplo.....si quisiera imprimir únicamente el objeto que tiene como valor en a==5.

Seria un bucle FOR y poner un IF obj.a==5 o existe algun método tipo get(), index() en las listas de Python que lo haga?
  #6 (permalink)  
Antiguo 14/03/2013, 21:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

Bueno depende mucho de lo quieras hacer.
¿Encontrar la primer ocurrencia?
¿Filtar por valores?
¿Checar si algo esta dentro de la lista?
¿Encontrar el indice de la primera o ultima ocurrencia?

Aquí hay buen listado de opciones.

http://stackoverflow.com/questions/9...n-find-in-list
  #7 (permalink)  
Antiguo 15/03/2013, 04:00
 
Fecha de Ingreso: marzo-2013
Mensajes: 10
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

Cita:
¿Encontrar la primer ocurrencia?
Si, siempre será unívoca, como el número de teléfono de cada uno, así que siempre habrá uno o ninguno.

Cita:
¿Filtar por valores?
No haría falta filtrar, solo obtener el objeto que contenga ese valor en un campo

Cita:
¿Checar si algo esta dentro de la lista?
Sería recomendable, del estilo return(x) donde x será la posición dentro de la lista o None en caso de que no haya encontrado ninguno

Cita:
¿Encontrar el indice de la primera o ultima ocurrencia?
No haría falta, solo tener siempre disponible una lista (como una agenda) de objetos y recuperar sus datos cuando busque uno en particular por alguno de sus campos


Muchas gracias
  #8 (permalink)  
Antiguo 15/03/2013, 12:50
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Crear una lista con objetos (diccionarios en una lista?)

No olvides marcar el tema como solucionado

Etiquetas: diccionarios, lista, objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:24.