Py: Ausgabe mit print

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benari
User
Beiträge: 8
Registriert: Sonntag 8. September 2019, 15:34

Python: 3.8

Hallo!

Ich bin Python-Neuling und habe eine Frage zur Ausgabe mit print:

Ein netter Helfer hat mir Routinen geschrieben, mit denen ich Textdateien als Wortlisten ausgeben lassen kann.

Leider erhalte ich bei folgender Routine eine ungeeignete Liste:

# Wortliste: nach Länge und darin alphabetisch geordnet
print("-" * 30)
print ('Wortliste nach Länge der Wörter')
print()

words = sorted(words, key = lambda str: len(str))
words.sort() # sortiert: alphabetisch

def sorting_laenge(words):
words.sort(key=len) # sortiert nach Wortlänge
return words

# Driver code
print("-" * 30)
print(sorting_laenge(words))
print()

Ergebnis:
['ab', 'er', 'im', 'auf', 'das', 'der', 'die', 'hin', 'mai', 'und', 'zug', 'alte', 'auch', 'brei', 'hing', 'mann', 'euter', 'gehen', 'neben', 'nicht', 'schal', 'unter', 'viele', 'ärger', 'beugen', 'kommen', 'python', 'straße', 'wieder', 'gebäude', 'schrank', 'äußerst', 'öffnung', 'auenland', 'hauswand', 'dachstuhl', 'testdatei', 'äußerungen', 'nebensaison']

Ich brauche aber eine Liste mit nur einem Wort pro Zeile (ohne Hochkommas etc.):

ab
er
im
auf
...

Vielen Dank schon 'mal

Gruß: Benari
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du alphabetisch und nach Länge sortieren willst, macht es keinen Sinn, erst nach der Länge, dann alphabetisch und dann nochmal nach der Länge zu sortieren. Das erste Sortieren ist überflüssig.
`sorting_laenge` ändert die übergebene Liste und gibt sie zurück. So etwas ist verwirrend. Entweder macht man das eine oder da andere.

Am besten sortiert man in einem Durchlauf:

Code: Alles auswählen

words.sort(key=lambda s: (len(s), s))
Für die Ausgabe brauchst Du eine for-Schleife und kannst dann jedes Wort einzeln ausgeben.
Benari
User
Beiträge: 8
Registriert: Sonntag 8. September 2019, 15:34

Super! Vielen Dank für die schnelle und konstruktive Antwort.
Gruß: Benari
Antworten