Liste sortieren anhand der letzten vier ziffern Python?

3 Antworten

Von Experte ralphdieter bestätigt

Wie andere bereits schrieben, wäre es gut das in ein gescheites strukturiertes Format zu überführen, aber:

somelist.sort(key=lambda v:int(v[-4:])

wäre eine Möglichkeit.

Davon ab:

#      autoren = datei.read().splitlines()
#      for autor in autoren:
       for autor in datei:

Textdateien sind direkt iterierbar.

Nachtrag, ich hatte beim Slice den Doppelpunkt vergessen.

Du machst ein Split auf den String, wandelst den hinteren Teil in eine Zahl um und vergleichst dann die Zahlenwerte.

die ersten ziffern sind dabei die user id und die hinteren 4 ziffern stellen das geld der user da.

Kann man so in einer Datei speichern, aber es wäre sinnvoll sowas im Programm gleich in einen strukturierten Datentyp umzuwandeln, etwa ein Dictionary oder wenigstens eine Liste. Sonst murkst du doch dauernd mühsam mit Slices herum.

Etwa in diese Richtung:

autoren_dicts = [{'user':autor[:-5], 'money':int(autor[-4:])} for autor in autoren]

Eine sortierte Ansicht kriegst du dann bequem so:

sorted(autoren_dicts, key=lambda a:a['money'])