Keys in Dictionary

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
Luki_0814
User
Beiträge: 2
Registriert: Donnerstag 8. Juli 2021, 14:13

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
Sirius3
User
Beiträge: 17759
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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()
Luki_0814
User
Beiträge: 2
Registriert: Donnerstag 8. Juli 2021, 14:13

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
Antworten