ordenar lista bidimensional por una columna dada

César González cesar en eureka-sistemas.com
Mar Nov 26 14:43:26 CET 2002


El Mar 26 Nov 2002 13:08, Chema Cortes escribió:
> > ¿Conoces algo como el sort de numeric pero que pueda tambien actuar sobre
> > arrays que contengan cadenas de texto?
>
> Si consideras que una matriz bidimensional es una lista de listas, estaba 
bien dada la primera respuesta de Marcos:
> >>> a=[[4,"Hola"],[2,"Pepe"]]
> >>> a.sort(lambda x,y: cmp(x[0],y[0]))
> >>> a
>
> [[2, 'Pepe'], [4, 'Hola']]
>
>
> Si no te vale, pon el código.

[[25, 'informe1', 365, <DateTime object for '2002-11-26 00:00:00.00' at 
8255e50>, 'Prueba1'], 
[23, 'informe2', 87, <DateTime object for '2001-02-21 00:00:00.00' at 
84ab730>, 'Prueba2']]

Este es un ejemplo de una lista de listas con las que tengo que tratar. Si le 
paso la funcion sort que habeis propuesto casca debido a que en una columna 
hay objetos DateTime, aun teniendo en cuenta que estoy buscando por la 
columna 0 que son enteros sin mas...

tabla.sort(lambda x,y: cmp(x[0],y[0]))
  File "pydoman.py", line 68, in <lambda>
    tabla.sort(lambda x,y: cmp(x[0],y[0]))
TypeError: objects must be DateTime[Delta] instances

Segun veo me dice que los objetos DateTime tienen que ser incrementos de 
tiempo no DateTimes a secas no?. ¿Por que el metodo sort no acepta fechas 
absolutas? y si le estoy diciendo que ordene por una columna que es de tipo 
entero... ¿por que se queja del DateTime? ¿Que tipos de datos acepta sort?

Gracias de nuevo,

Bolo.


Más información sobre la lista de distribución Python-es