Csv-Datei in python öffnen, um Wörterbuch

Diese Frage hat hier schon eine Antwort:

  • Erstellen eines Wörterbuchs aus einer CSV-Datei 4 Antworten

Ich möchte wissen, um diese csv-Datei zu laden:

Epitope,ID,Frequency,Assay AVNIVGYSNAQGVDY,123431,27.0,Tetramer DIKYTWNVPKI,887473,50.0,3H LRQMRTVTPIRMQGG,34234,11.9,Elispot 

In ein python Wörterbuch wie folgt:

 d = {'AVNIVGYSNAQGVDY': [ID[123431],Frequency[27.0],Assay['Tetramer']], 'DIKYTWNVPKI': [ID[887473],Frequency[50.0],Assay['3H']], 'LRQMRTVTPIRMQGG': [ID[34234],Frequency[11.9],Assay['Elispot']]} 

Ich arbeite mit Listen, da meine eigentliche Datei größer ist und ich werde mehr Werte an diese Listen anfügen.

  • Wie macht man Zackenbarsch und Achse die gleiche Länge?
  • Probleme beim Schreiben von gekratzten Daten in csv mit slawischen Zeichen (UnicodeEncodeError & TypeError)
  • Methode zum Raten der Art der Daten, die derzeit als Strings dargestellt werden
  • Wie kann ich das Attribut fields_to_export in BaseItemExporter verwenden, um meine Scrapy CSV Daten zu bestellen?
  • Csv nicht Mapping in Django-Modell
  • Python csv, Header nur einmal schreiben
  • One Solution collect form web for “Csv-Datei in python öffnen, um Wörterbuch”

    Zuerst kennen Sie das csv Modul? Wenn nicht, lesen Sie die Einleitung und Beispiele auf den Punkt, wo Sie wissen, wie man eine iterable von Zeilen zu bekommen. Drucken Sie jede aus, und sie werden so etwas aussehen:

     ['AVNIVGYSNAQGVDY', '123431', '27.0', 'Tetramer'] 

    Oder wenn du einen DictReader benutzt DictReader :

     {'Epitope': 'AVNIVGYSNAQGVDY', 'ID': '123431', 'Frequency': '27.0', 'Assay': 'Tetramer'} 

    Aber du willst keine Liste von Listen oder eine Liste von Wörterbüchern; Sie wollen ein Wörterbuch von Listen, wobei jeder Schlüssel das Epitope aus einer Zeile ist und der entsprechende Wert die anderen drei Werte ist, richtig? Also … füge einfach jede Zeile in ein Wörterbuch ein:

     d = {} with open(path, 'rb') as f: with csv.DictReader(f) as reader: for row in reader: d[row['Epitope']] = [row['ID'], row['Frequency'], row['Assay']] 

    (Das wäre kompakter mit einem einfachen reader anstelle eines DictReader , aber ich denke, es ist besser lesbar auf diese Weise, wenn Sie wieder in den Code kommen ein paar Monate ab jetzt.)

    Sie wollen auch die Werte umwandeln und sie als Schlüssel für einen anderen Lookup verwenden, aber das sollte trivial sein. Beispielsweise:

      row_id = ID[int(row['ID'])] row_frequency = Frequency[float(row['Frequency'])] row_assay = Assay[row['Assay']] d[row['Epitope']] = [row_id, row_frequency, row_assay] 

    Sie können dies ein bisschen reinigen, indem Sie die Zeilentransformation als Funktion schreiben und dann nur ein Wörterbuchverstehen verwenden:

     with open(path, 'rb') as f: with csv.DictReader(f) as reader: d = {row['Epitope']: process_row(row) for row in reader} 
    Python ist die beste Programmiersprache der Welt.