Seite 1 von 1
Keys in Dictionary
Verfasst: Donnerstag 8. Juli 2021, 14:35
von Luki_0814
Hallo,
ich sitze gerade an einer Aufgabe, bei der ich aus einer Textdatei/Tabelle ein Dictionary erstellen will.
Die Tabelle hat 5 Spalten, allerdings sehr viele Zeilen.
Als Keys sollen jeweils das erste Wort in der Zeile benutzt werden.
Bisher habe ich meine Keys jedoch immer nur manuell eingegeben und dann die Werte mit .append(datensatz.split()[0]) den jeweiligen Keys zugeordnet.
Ich konnte bisher nichts finden, bevor ich also ewig nach einer Lösung suche, die es evtl. überhaupt nicht gibt, folgende Frage:
Gibt es eine Möglichkeit, die Keys z.B. in einer Schleife festzulegen, und mit den übrigen Werten aus einer Zeile zu befallen?
Herzliche Grüße
Luki
Re: Keys in Dictionary
Verfasst: Donnerstag 8. Juli 2021, 15:02
von Sirius3
Statt Deinen Code zu umschreiben, zeige doch bitte, was Du bisher programmiert hast und wo Du nicht weiter kommst. Wie sieht die Tabelle aus, wie soll das Wörterbuch als Ergebnis aussehen?
Re: Keys in Dictionary
Verfasst: Donnerstag 8. Juli 2021, 15:12
von __deets__
Wenn ich dich richtig verstehe, dann ist die Antwort "natuerlich". Du kannst in einer for-schleife so viele Eintraege in einem dictionary erzeugen, wie du willst. ZB so:
Code: Alles auswählen
import io
import csv
import pprint
DATA = """a,1,2,3,4
b,5,6,7,8
"""
def main():
result = {}
reader = csv.reader(io.StringIO(DATA))
for row in reader:
result[row[0]] = row[1:]
pprint.pprint(result)
if __name__ == '__main__':
main()
Re: Keys in Dictionary
Verfasst: Donnerstag 8. Juli 2021, 16:51
von Luki_0814
Danke für Eure raschen Antworten!
Sirius3 hat geschrieben: Donnerstag 8. Juli 2021, 15:02
Statt Deinen Code zu umschreiben, zeige doch bitte, was Du bisher programmiert hast und wo Du nicht weiter kommst. Wie sieht die Tabelle aus, wie soll das Wörterbuch als Ergebnis aussehen?
Also bisher habe ich das immer nach folgendem Aufbau gemacht:
Code: Alles auswählen
datei = open("Datei.dat","r")
dateiinhalt = datei.readlines()
datei.close()
Datenbank = {}
Datenbank["Spalte1"] = []
Datenbank["Spalte2"] = []
for datensatz in dateiinhalt:
try:
Datenbank["Spalte1"].append(datensatz.split()[0])
Datenbank["Spalte2"].append(datensatz.split()[1])
except:
print("... das klappte nicht:", datensatz)
So habe ich es auch in meinem Programm gemacht, bis mir aufgefallen ist, dass die Keys nicht die Spalte, sondern die Zeilen umfassen sollten.
Daher habe ich im Moment noch keinen Code, den es sich lohnt hier zu zeigen.
__deets__ hat geschrieben: Donnerstag 8. Juli 2021, 15:12
Wenn ich dich richtig verstehe, dann ist die Antwort "natuerlich". Du kannst in einer for-schleife so viele Eintraege in einem dictionary erzeugen, wie du willst. ZB so:
Code: Alles auswählen
import io
import csv
import pprint
DATA = """a,1,2,3,4
b,5,6,7,8
"""
def main():
result = {}
reader = csv.reader(io.StringIO(DATA))
for row in reader:
result[row[0]] = row[1:]
pprint.pprint(result)
if __name__ == '__main__':
main()
Der Teil mit der for-Schleife sieht aber genau nach dem aus, was ich gesucht habe!
Ich versuche es bei mir umzusetzen - falls ich noch Fragen habe, habe ich jetzt ja dann Code zum zeigen.
Tausend Dank dafür
Liebe Grüße