Foros del Web » Programando para Internet » Python »

ordenar una lista por una propiedad de los elemntos

Estas en el tema de ordenar una lista por una propiedad de los elemntos en el foro de Python en Foros del Web. A ver si alguien puede ayudarme, tengo una lista de tuplas como: [ ['01','A','Z',2], ['01','B','X',1], ['02','C','Z',1], ['03','D','Y',2]] y un diccionario asociado a algunos elementos de ...
  #1 (permalink)  
Antiguo 17/06/2009, 02:27
 
Fecha de Ingreso: enero-2006
Mensajes: 18
Antigüedad: 18 años, 3 meses
Puntos: 1
Pregunta ordenar una lista por una propiedad de los elemntos

A ver si alguien puede ayudarme, tengo una lista de tuplas como:
[ ['01','A','Z',2], ['01','B','X',1], ['02','C','Z',1], ['03','D','Y',2]]

y un diccionario asociado a algunos elementos de las tuplas de la lista
{'01':[4,5,6,7], '03':[8,9,10,11,12,13,14]}

y yo quiero ordenar la primera lista por la longitud de la lista que son valores en el dicionario cuyas claves son el primer elemnto en las tuplas de la primera lista, es decir que quede así:

[ ['03','D','Y',2], ['01','A','Z',2], ['01','B','X',1], ['02','C','Z',1]]

ya que el valor cuya clave es '03' en el diccionario tiene longitud 7 y '01' es 4 y la clave '02' no está.

Estoy simplificando el problema, la estructura es muy grande, y no quiero hacer más listas asociadas, entonces quería saber si se podrá hacer en una o dos sentencias.

desde ya muchas gracias.
  #2 (permalink)  
Antiguo 17/06/2009, 09:53
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: ordenar una lista por una propiedad de los elemntos

Código python:
Ver original
  1. l = [['01','A','Z',2], ['01','B','X',1], ['02','C','Z',1], ['03','D','Y',2]]
  2. l.sort(reverse=True, key=lambda x:(x[-1]))
  3. print l
  #3 (permalink)  
Antiguo 21/06/2009, 23:40
 
Fecha de Ingreso: enero-2006
Mensajes: 18
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: ordenar una lista por una propiedad de los elemntos

No entiendo si esto vaya a funcionar, pero agradezco la respuesta, voy a probar.
Muchas Gracias
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 22:11.