Ho un file CSV con le intestazioni nella parte superiore delle colonne di dati come ...Modo più Pythonic per leggere i valori CSV in dict di liste
<Header1>, <Header2>, ... ,<HeaderN>
<data11> , <data12> , ... ,<data1N>
<data21> , <data12> , ... ,<data2N>
... , ... , ... , ...
<dataM1> , <dataM2> , ... ,<dataMN>
(vale a dire i dati standard tabulato)
Quando lettura di questo con DictReader
sto usando un ciclo annidato per aggiungere elementi nella riga leggere all'elenco nella rispettiva tonalità
f = <path_to_some_csv_file.csv>
dr = csv.DictReader(open(f))
dict_of_lists = dr.next()
for k in dict_of_lists.keys():
dict_of_lists[k] = [dict_of_lists[k]]
for line in dr:
for k in dict_of_lists.keys():
dict_of_lists[k].append(line[k])
il primo ciclo, tutti i valori nel dict al lista vuota. Il prossimo loop su ogni riga letta dal file csv, da cui DictReader crea una dict di valori-chiave. Il ciclo interno aggiunge il valore alla lista corrispondente al valore della chiave corrispondente, quindi termino con l'elenco di diti desiderato. Finisco per doverlo scrivere abbastanza spesso.
La mia domanda è, c'è un modo più Python per farlo usando funzioni incorporate senza il ciclo annidato, o un idioma migliore, o un modo alternativo per memorizzare questa struttura dati in modo tale che io possa restituire un elenco indicizzabile interrogando con un valore chiave? Se è così, c'è anche un modo per formattare i dati che vengono ingeriti dalla colonna in primo piano? (per un MWE basta copiare i dati sopra in un file di testo ed eseguirlo attraverso il codice) Grazie in anticipo!
'per k in dict_of_lists.keys():' -> 'per k in dict_of_lists:' –