Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: El mas antiguo en 24 Agosto 2022, 15:17 pm



Título: Ordenar lista con sort y key en python.
Publicado por: El mas antiguo en 24 Agosto 2022, 15:17 pm
Hola, gente, ¿cómo están?.-
Le expongo lo que deseo hacer y evidentemente no logro concretar,
estoy haciendo mi propio traductor inglés/español y quisiera ordenar
él .txt que contiene las 1300 palabras, pero los pocos ejemplos que
encuentro con key son sobre diccionarios, concretamente quisiera
ordenar todas las palabras teniendo en cuenta solamente las palabras
en inglés...

Código
  1. import codecs
  2.  
  3. palabras = []
  4. with codecs.open('Traductor.txt', 'r', encoding='utf-8') as archivo:
  5.    for tmpLinea in archivo:
  6.        tmpLinea[:].strip()
  7.        linea = tmpLinea.split(',')
  8.        palabras.append(linea)
  9.  
  10. palabras.sort()
  11.  
  12. with codecs.open('Traductor.txt', 'w', encoding='utf-8') as archivo:
  13.    for item in palabras:
  14.        final = f"{item[0]},{item[1]}"
  15.        archivo.write(final)



Citar
ability,capacidad
able,poder
abortion,aborto
about,acerca de
above,encima
abstract,resumen abstracto
accept,aceptar
access,acceso
accord,acuerdo
account,cuenta
accuse,acusar
achieve,lograr
across,a través de
act,acto
action,acción
activity,actividad
actually,actualmente

Desde ya muchas gracias por la ayuda.
Slds. Daniel ☕☕☕


Título: Re: Ordenar lista con sort y key en python.
Publicado por: reymosquito en 24 Agosto 2022, 16:19 pm
lo haría basicamente así:
Código
  1. #-*- coding:utf-8 -*-
  2. import codecs
  3.  
  4. with codecs.open('Traductor.txt', 'r', encoding='utf-8') as archivo:
  5.    palabras=[[linea.strip()] for linea in archivo]#no obligatorio, pero no me gustan tantas declaraciones
  6.  
  7. palabras.sort(key=lambda x: x[0] )
  8.  
  9. with codecs.open('Traductor.txt', 'w', encoding='utf-8') as archivo:
  10.    for item in palabras:
  11.         archivo.write(",".join(item)+"\n")
  12.  


Título: Re: Ordenar lista con sort y key en python.
Publicado por: El mas antiguo en 24 Agosto 2022, 16:59 pm
Gracias por tu código, no puedo dejar de ser sincero, no lo entiendo
me gusta como aprendiz(autodidacta) poder interpretar los códigos
de los demás para aprender, igual pude sacar mucho de los 2 bucles
sobre archivos gracias muchas gracias, seguiré investigando...

Slds. Daniel ☕☕☕


Título: Re: Ordenar lista con sort y key en python.
Publicado por: reymosquito en 24 Agosto 2022, 17:15 pm
la mayoría somos aprendices y autodidactas, no hay nada dificil en el código:
Código
  1. palabras=[[linea.strip()] for linea in archivo]

comprensión de listas, que como dije no es obligatorio

Código
  1. palabras.sort(key=lambda x: x[0] )

es solo usar la clave key de sort y una función lambda
Código
  1. archivo.write(",".join(item)+"\n")

el método join es lo más básico de python.


Título: Re: Ordenar lista con sort y key en python.
Publicado por: El mas antiguo en 24 Agosto 2022, 18:34 pm
Bien, resumiendo me queda una gran duda, explícame por qué debo
suponer que estás separando("ability,capacidad") las 2 palabras si lo
que contiene "palabras" en cada elemento es un string y no una lista
de listas, no lo entiendo...

Slds. Daniel ☕☕☕


Título: Re: Ordenar lista con sort y key en python.
Publicado por: reymosquito en 24 Agosto 2022, 19:23 pm
ahh es un error mio de copia del código, no vi que había usado una linea anterior. ahí no estan separadas, la línea final es:
Código
  1. palabras=[linea.strip().split(",") for linea in archivo]

debo haber hecho un undo en mi editor y ni me fijé.


Título: Re: Ordenar lista con sort y key en python.
Publicado por: El mas antiguo en 24 Agosto 2022, 20:51 pm
Gracias rey, ahora me queda todo mucho más claro, gracias mil...

Slds. Daniel ☕☕☕