Python lambda?

Was macht lambda in diesem Code und wofür steht x?

def sort_tasks_by_due_date():
tasks.sort(key=lambda x: datetime.strptime(x["due_date"], "%d.%m.%Y"))

Hier der Komplette Code:

from datetime import datetime, timedelta
tasks = []
def add_task(description, due_date, priority):
task = {"description": description, "due_date": due_date, "priority": priority, "completed": False}
tasks.append(task)
def mark_completed(task_index):
if 0 <= task_index < len(tasks):
tasks[task_index]["completed"] = True
else:
print("Ungültiger Index für Aufgabe!")
def remove_task(task_index):
task_index = int(task_index)
if 0 <= task_index < len(tasks):
del tasks[task_index]
else:
print("Ungültiger Index für Aufgabe!")
def show_tasks():
for task_number, task in enumerate(tasks):
status = "Erledigt" if task["completed"] else "Offen"
print(f"{task_number + 1}. Beschreibung: {task['description']}, Fälligkeitsdatum: {task['due_date']}, Priorität: {task['priority']} - {status}")
def sort_tasks_by_due_date():
tasks.sort(key=lambda x: datetime.strptime(x["due_date"], "%d.%m.%Y"))
def remind_near_due_dates(days_before):
today = datetime.today()
for task in tasks:
due_date = datetime.strptime(task["due_date"], "%d.%m.%Y")
#Das Datum der Aufgabe minus des heutigen Datums, gleichviele Tage wie die Festgelgten Tage ist, dann gib eine Erinnerung aus.
if due_date - today <= timedelta(days=days_before) and not task["completed"]:
print(f"Erinnerung: Die Aufgabe '{task['description']}' ist bald fällig am {task['due_date']}!")
while True:
print("\n--- ToDo-Liste ---")
print("1. Aufgabe hinzufügen")
print("2. Aufgabe als erledigt markieren")
print("3. Aufgabe entfernen")
print("4. Aufgaben anzeigen")
print("5. Aufgaben nach Fälligkeitsdatum sortieren")
print("6. Erinnerung an nahende Fälligkeitsdaten einrichten")
print("7. Beenden")
choice = input("Wähle eine Option: ")
if choice == "1":
description = input("Beschreibung: ")
while True:
due_date = input("Fälligkeitsdatum (TT.MM.JJJJ): ")
try:
due_date_obj = datetime.strptime(due_date, "%d.%m.%Y")
if due_date_obj < datetime.today():
print("Fehler: Das Datum liegt in der Vergangenheit! Bitte geben Sie ein zukünftiges Datum ein.")
else:
break
except ValueError:
print("Fehler: Ungültiges Datumsformat! Bitte geben Sie das Datum im Format TT.MM.JJJJ ein.")
priority = input("Priorität: ")
add_task(description, due_date, priority)
elif choice == "2":
task_index = int(input("Index der erledigten Aufgabe: ")) - 1
mark_completed(task_index)
elif choice == "3":
try:
task_index = int(input("Index der zu entfernenden Aufgabe: ")) - 1
remove_task(task_index)
except ValueError:
print("Ungültige Eingabe! Bitte geben Sie eine Ganzzahl ein.")
elif choice == "4":
show_tasks()
elif choice == "5":
sort_tasks_by_due_date()
elif choice == "6":
try:
days_before = int(input("Tage vor Fälligkeitsdatum für Erinnerung: "))
remind_near_due_dates(days_before)
except ValueError:
print("Gib eine gültige Eingabe ein!")
elif choice == "7":
break
else:
print("Ungültige Auswahl!")
Programmiersprache, Python, Lambda, Python 3
Python Code Hilfe?

Wiso ist bei show_task nochmal nötig vordran überall "Beschreibung" etc. zu setzen, wenn doch bei add_task schon überall "description" etc. steht.?

tasks = []

def add_task(description, due_date, priority):
    task = {
        "description": description,
        "due_date": due_date,
        "priority": priority,
        "completed": False,
    }
    tasks.append(task)


def mark_completed(task_index):
    if 0 <= task_index < len(tasks):
        tasks[task_index]["completed"] = True
    else:
        print("Ungültiger Index für Aufgabe!")


def remove_task(task_index):
    if 0 <= task_index < len(tasks):
        del tasks[task_index]
    else:
        print("Ungültiger Index für Aufgabe!")


def show_tasks():
    for i, task in enumerate(tasks):
        status = "Erledigt" if task["completed"] else "Offen"
        print(
            f"{i + 1}. Beschreibung: {task['description']}, Fälligkeitsdatum: {task['due_date']}, Priorität: {task['priority']} - {status}"
        )


def main():
    while True:
        print("\n--- ToDo-Liste ---")
        print("1. Aufgabe hinzufügen")
        print("2. Aufgabe als erledigt markieren")
        print("3. Aufgabe entfernen")
        print("4. Aufgaben anzeigen")
        print("5. Beenden")
        choice = input("Wähle eine Option: ")
        if choice == "1":
            description = input("Beschreibung: ")
            due_date = input("Fälligkeitsdatum (TT.MM.JJJJ): ")
            priority = input("Priorität (hoch/niedrig): ")
            add_task(description, due_date, priority)
        elif choice == "2":
            task_index = int(input("Index der erledigten Aufgabe: ")) - 1
            mark_completed(task_index)
        elif choice == "3":
            task_index = int(input("Index der zu entfernenden Aufgabe: ")) - 1
            remove_task(task_index)
        elif choice == "4":
            show_tasks()
        elif choice == "5":
            break
        else:
            print("Ungültige Auswahl!")

main()

programmieren, Python