Cómo ordenar ascendente mente una lista de tareas basada en la prioridad.
Como parte de una oportunidad de pasantía, nos han pedido que hagamos una aplicación CLI de lista de tareas pendientes. El problema es que no sé cómo ordenar el texto en el archivo en orden ascendente de prioridad, cualquier ayuda sería apreciada.
Aquí está mi código:
import typer
app = typer.Typer()
@app.command()
def help():
print("""Uso:
$ ./todo add 2 hello world # Agregar un nuevo elemento con prioridad 2 y texto "hello world" a la lista
$ ./todo ls # Mostrar elementos de la lista de prioridades incompletas ordenados por prioridad en orden ascendente
$ ./todo del NUMBER # Eliminar el elemento incompleto con el número de prioridad dado
$ ./todo done NUMBER # Marcar el elemento incompleto con el NÚMERO_DE_PRIORIDAD dado como completado
$ ./todo help # Mostrar el uso
$ ./todo report # Estadísticas """)
@app.command()
def add(priority: int,task: str):
file1=open("ls.txt","r")
x=len(file1.readlines())
y=x+1
file1.close()
file1=open("ls.txt","a")
file1.write(str(y)+". "+task + " ["+str(priority)+"]"+ "\n")
file1.close()
@app.command()
def ls():
file1=open("ls.txt","r")
print(file1.read())
if __name__=="__main__":
app()
Y aquí está la imagen de salida deseada: image
davy.ai
Para ordenar el texto en el archivo en orden ascendente de prioridad, puedes hacer lo siguiente:
sorted
con una función de clave para ordenar la lista basada en la prioridad.Aquí tienes una versión actualizada de la función
ls
que implementa esto:Explicación:
items
. Utilizamos una declaraciónwith
para cerrar automáticamente el archivo después de la lectura.sorted
para ordenar la listaitems
basándonos en el valor de prioridad. La función de clave es una función lambda que extrae el valor de prioridad de cada ítem.