@Dödelmann: Ergänzend zu der Antwort von /me: Wenn Du den Quelltext im Beitrag in Code-Tags packst, bleibt die Einrückung in der Anzeige erhalten, was ja bei Python wichtiger Bestandteil der Syntax ist.
Beim öffnen von Textdateien sollte man immer explizit die Kodierung angeben in der die Daten gespeichert sind/gespeichert werden sollen. Wenn man das selbst in der Hand hat, bietet sich UTF-8 an, weil das alle Unicode-Zeichen (de)kodieren kann.
`fobj` ist ein komischer Name. Namen sollten keine kryptischen Abkürzungen enthalten, wie hier `f` was wohl für `file` stehen soll, und `obj` das wohl für `object` stehen soll ist unnötig. In Python ist *alles* was man an einen Namen binden kann ein Objekt. Da im Namen noch mal sagen, dass es sich um ein Objekt handelt ist also keine Information die dem Leser einen Mehrwert liefert. Also wäre das einfach nur `file`. Oder, da es als iterierbares Objekt über Zeilen verwendet wird, könnte man es auch `lines` nennen.
Indexzugriffe mit ”magischen” Zahlen sind nicht so wirklich schön zu lesen. Statt einen Namen `zuordnung` und dann mit 0 und 1 auf die beiden Teile zuzugreifen, wäre es besser lesbar, wenn man das Ergebnis von `split()` gleich an zwei aussagekräftigere Namen zuweist:
Code: Alles auswählen
woerter = {}
for line in lines:
schluessel, wert = line.split(" ")
woerter[schluessel] = wert
Die Zeilen in der Datei werden mit einem Zeilenendezeichen abgeschlossen, was im Moment noch Teil der Werte ist. Das willst Du ziemlich sicher entfernen.
Letztlich kann man es aber auch massiv vereinfachen, weil man Wörterbücher auch erstellen kann in dem man `dict()` mit einem iterierbaren Objekt aufruft, das Schlüssel/Wert-Paare liefert. Damit wird das zu einem einzigen Ausdruck. Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
def main():
with open(
R"C:\Users\jonat\OneDrive\Desktop\Python\Wörter.txt",
"r",
encoding="utf-8",
) as lines:
woerter = dict(line.rstrip().split(" ") for line in lines)
if __name__ == "__main__":
main()