Hallo hiermit bitte ich euch um die Hilfe bei diesem Code..
Ich habe einen langen Text und ich muss ihn nach Länge der Wörter, die im Text sind, sortieren.
Output sollte so aussehen:
Word lenght 4: [ ‘code’, ‘show’, ‘good’......]
Word lenght 5:[ ‘pizza’, ‘jumbo’ .....]
Text = [...........]
my_text = text.split()
my_text sind jetzt einzelne strings und die muss ich nur noch nach der Länge zuordnen und dann das ganze alphabetisch sortieren
Länge von Strings :
for i in range(0, len(my_text)):
word_lenght = len(my_text)
Leider weiß ich jetzt nicht wie ich aus dieser Funktion eine Liste bilden kann und wie ich die Liste von Längen mit den Wörter in dict zusammenfügen kann.
Einen Text nach Länge der Wörter sortieren
`my_text` ist ein schlechter Variablenname für eine Liste mit Wörtern. `words` wäre passender.
Was Du brauchst ist ein Wörterbuch, wo der Schlüssel die Länge ist und der Wert eine Liste mit Wörtern dieser Länge. `defaultdict` ist da immer sehr hilfreich und dann eine Schleife über alle Wörter, nicht über den Index!
Was Du brauchst ist ein Wörterbuch, wo der Schlüssel die Länge ist und der Wert eine Liste mit Wörtern dieser Länge. `defaultdict` ist da immer sehr hilfreich und dann eine Schleife über alle Wörter, nicht über den Index!
Code: Alles auswählen
from collections import defaultdict
words = text.split()
length_to_words = defaultdict(list)
for word in words:
# hier ein Wörterbuchzugriff mit der Länge des Wortes
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wenn man es nicht unbedingt selbst programmieren möchte, gibt es da auch schon was von Ratio…, äh, im `more_itertools`-Modul:
Code: Alles auswählen
In [80]: text
Out[80]: 'code pizza show jumbo good'
In [81]: more_itertools.map_reduce(text.split(), len)
Out[81]: defaultdict(None, {4: ['code', 'show', 'good'], 5: ['pizza', 'jumbo']})
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Sirius3: Laut Dokumentation damit sich das am Ende wie ein normales Wörterbuch verhält das bei nicht vorhandenen Schlüsseln mit einem `KeyError` reagiert.
Und Listen sind es auch nur wenn man `map_reduce()` bei `reducefunc` nichts übergibt, beziehungsweise etwas übergibt was eine Liste als Ergebnis hat.
Code: Alles auswählen
In [85]: d
Out[85]: defaultdict(None, {4: ['code', 'show', 'good'], 5: ['pizza', 'jumbo']})
In [86]: d[42]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-86-647d64566acd> in <module>()
----> 1 d[42]
KeyError: 42
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman