Foros del Web » Programando para Internet » Python »

Problema para ordenar listas en python

Estas en el tema de Problema para ordenar listas en python en el foro de Python en Foros del Web. Que tal amigos, estoy empezando a programar en python tengo un inconveniente, con ordenar una serie de registros traídos de un archivo de texto. Formato ...
  #1 (permalink)  
Antiguo 02/12/2012, 14:59
 
Fecha de Ingreso: diciembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Problema para ordenar listas en python

Que tal amigos, estoy empezando a programar en python tengo un inconveniente, con ordenar una serie de registros traídos de un archivo de texto.
Formato archivo txt:
Código:
Periodo|Ajuste Cierre
1|388.39 
2|385.39 
3|376.84
7|392.46
23|416.11
Con el siguiente algoritmo leo las líneas del txt y separo en listas de tipo string:

Código Python:
Ver original
  1. def cargar_txt(self): #Abre un archivo, lee y regresa un arreglo
  2.     archivo = open( self.path )
  3.         renglones = archivo.readlines()
  4.         renglones = [a.replace('\n', '') for a in renglones]
  5.         arreglo = map( lambda x: x.split('|'), renglones )
  6.         return arreglo
  7.         archivo.close()

Código Python:
Ver original
  1. print arreglo --> [ ['5|345.76'],['3|322.56'],['8|344.23'],['1|234.45'] ]

El problema es que aquí no puedo ordenar la lista arreglo por periodo, ya que los datos guardados son tipo string, y quiero que ordene como entero ascendentemente.
- Luego convierto los campos guardados en la lista a entero(periodo) y float ( ajuste de cierre), el problema que tengo es que no puedo ordenarlos de manera ascendente por periodo.
Es para la creación de un sistema de proyección lineal, necesito tener estos valores ordenados.
Código Python:
Ver original
  1. def on_btn_semana_clicked(self, widget, data=None):
  2.         self.path = str(self.b.get_object('path_entry').get_text())
  3.         matriz = self.cargar_txt()
  4.         print matriz
  5.         for periodo, ajuste_cierre in matriz:
  6.             periodo = int(periodo)
  7.             ajuste_cierre = float(ajuste_cierre)
  8.             self.campos = [periodo, ajuste_cierre]
  9.             print 'Periodo: %d  Ajuste de Cierre: %f ' % (periodo,ajuste_cierre)
--->
Código:
Periodo: 1	Ajuste de Cierre: 388.390000 
Periodo: 2	Ajuste de Cierre: 385.390000 
Periodo: 3	Ajuste de Cierre: 376.840000 
Periodo: 7	Ajuste de Cierre: 392.460000 
Periodo: 23 Ajuste de Cierre: 416.110000
Muchas gracias por su atención y agradesco mucho su ayuda, saludos!

Última edición por razpeitia; 02/12/2012 a las 16:27 Razón: Resaltado de sintaxis
  #2 (permalink)  
Antiguo 02/12/2012, 16:41
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: Problema para ordenar listas en python

Supon que mi_archivo.txt tiene lo siguiente:
Código:
Periodo|Ajuste Cierre
1|388.39 
2|385.39 
3|376.84
7|392.46
23|416.11
Código Python:
Ver original
  1. import csv
  2.  
  3. my_list = []
  4. with open('mi_archivo.txt', 'rb') as csvfile:
  5.     reader = csv.reader(csvfile, delimiter='|')
  6.     reader.next() # Ignore headers
  7.     for row in reader:
  8.         my_list.append((int(row[0]), float(row[1])))
  9.  
  10. my_list.sort()
  11. for x, y in my_list:
  12.     print x, y
  #3 (permalink)  
Antiguo 02/12/2012, 22:13
 
Fecha de Ingreso: diciembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema para ordenar listas en python

Muchas gracias razpeitia, desconocía de esta forma para leer archivos de texto, sin embargo me está presentando otro problemita, y es que se pierde el primer registro leido, creo que es cuando imprimo, que no me muestra el registro numero 1.
  #4 (permalink)  
Antiguo 02/12/2012, 22:31
 
Fecha de Ingreso: diciembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema para ordenar listas en python

perdona razpeitia ya vi el problema jejejeje ; es que el header no lo tenia en el archivo original, y por eso estaba ignorando la primera línea, muchísimas gracias, aprendí varias cosas.
  #5 (permalink)  
Antiguo 08/12/2012, 17:28
 
Fecha de Ingreso: noviembre-2012
Mensajes: 111
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Problema para ordenar listas en python

Cita:
Iniciado por razpeitia Ver Mensaje
Supon que mi_archivo.txt tiene lo siguiente:
[CODE]
Periodo|Ajuste Cierre
1|388.39
2|385.39
3|376.84
7|392.46
23|416.11
Tu ejemplo me vino fantástico para combinar con una entrada de datos por formulario sugiriendo nombres!!!

Gracias!!

Etiquetas: gui, listas, programa, campos
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 12:40.