Estructura para una tabla?
Chema Cortes
chemacortes en wanadoo.es
Mie Mayo 29 09:54:21 CEST 2002
> Lo estoy intentando con una lista de diccionarios (tal y como propone
> Marcos). Como puedo crear un método de mi clase "lista_pedidos" que me
> devuelva una lista ordanada por uno de los campos? He intentado lo
> siguiente (siguiendo la idea de Hernan), pero no se si voy bien (de hecho,
> me dice que no encuentra "c1")...
>
> class lista_pedidos:
> def __init__(self):
> self.l = []
>
> def append(self, nc, pieza, cant, fecha):
> # construyo un diccionario (tengo otra clase llamada "pedido")
> c = pedido(nc, pieza, cant, fecha)
> # lo meto en la lista
> self.l.append(c)
>
> # ...aqui van más métodos... #
>
> def c1(a, b):
> # Aqui "pieza" me devuelve el numero de pieza del pedido
> if a.pieza() < b.pieza():
> return -1
> elif a.pieza() == b.pieza():
> return 0
> else:
> return 1
OJO! por ser c1 un método, el primer argumento siempre será una referencia al objeto. O sea, que el argumento 'a' es lo que, por convenio, se suele poner como 'self'.
A parte de esto, los dos argumentos son dos elementos de la lista (nc, pieza, cant, fecha). La comparación que quieres hacer es sobre el segundo elemento:
def cmp_pieza(a,b):
if a[1]<b[1]: return -1
else: return a[1]>b[1]
>
> def ordena_pieza(self):
> # Aqui es donde me tendría que devolver una lista de pedidos ordenada
> (cada pedido es un diccionario)
> return self.l.sort(c1)
Estás referenciado mal: 'self.c1'
Te aconsejo que saques 'c1' de la definición de clase.
Saludos,
--
Chema Cortes (chemacortes en wanadoo.es)
_____________________________________________________________________
No olvides nada. Recuerda los cumpleaños, tus citas, tus cenas románticas y
todo lo que quieras usando la Agenda personal de Wanadoo.es, desde cualquier
lugar conectado a Internet. Visítala en http://www.wanadoo.es/agenda
Más información sobre la lista de distribución Python-es