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