Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/05/2009, 03:38
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Como contar número de apariciones

Cita:
Iniciado por razpeitia Ver Mensaje
Código python:
Ver original
  1. archivo = "prueba.txt"
  2. try:
  3.     f = open(archivo,"r")
  4. except IOError:
  5.     f.close()
  6.     exit()
  7.  
  8. contenido = f.readlines()
  9. f.close()
  10.  
  11. lista = []
  12. lista_final = []
  13.  
  14. for numero in contenido:
  15.    lista += numero.split()
  16. lista.sort()
  17. set_lista = set(lista)
  18. set_lista = list(set_lista)
  19. set_lista.sort()
  20. print "Valor:Ocurrencias"
  21. for numero in set_lista:
  22.     lista_final.append((lista.count(numero), numero))
  23.  
  24. lista_final.sort(reverse=True)
  25. print lista_final

Este es un pequeño código que hice rápido :p
Funciona en general para caracteres también, no tiene limite de lineas, ni de largo ni de ancho. Solo tienen que ir separa por espacios o tabs.
Gracias razpeitia

Para que apareciese primero el numero y luego las veces que ha salido he tenido que cambiar el orden
lista_final.append((lista.count(numero), numero)) por lista_final.append((numero,lista.count(numero)))

Consiendo una salida de este tipo
Código:
Valor:Ocurrencias
('9', 6)
('8', 7)
('7', 5)
('6', 8)
('5', 7)
('49', 5)
('48', 5)
('47', 6)
('46', 9)
('45', 8)
('44', 7)
('43', 9)
('42', 3)
('41', 7)
('40', 14)
('4', 6)
('39', 10)
('38', 15)
('37', 13)
('36', 7)
('35', 5)
('34', 11)
('33', 10)
('32', 6)
('31', 7)
('30', 9)
('3', 5)
('29', 9)
('28', 10)
('27', 10)
('26', 8)
('25', 12)
('24', 6)
('23', 16)
('22', 17)
('21', 3)
('20', 6)
('2', 6)
('19', 10)
('18', 6)
('17', 9)
('16', 9)
('15', 7)
('14', 9)
('13', 8)
('12', 11)
('11', 11)
('10', 5)
('1', 4)
Me gustaría poder ordenar o bien por el primer valor, o bien por las veces que más a salido. Sabéis como debo hacerlo?

Porque he probado lista_final.sort() pero no me los ordena así.