Как бы я написал, что не использует DictReader, но получает тот же результат, как если бы DictReader был использован? - PullRequest
0 голосов
/ 27 марта 2020

По сути, скажем, мой CSV-файл такой:

name,job,age
Michael,Engineer,35
Katie,Doctor,52
Johnny,Physicist,42

Тогда я бы хотел вернуть это:

{'name':'Michael','job':'Engineer','age':'35'}
{'name':'Katie','job':'Doctor','age':'52'}
{'name':'Johnny','job':'Physicist','age':'42'}

Конечно, это просто сделать с помощью DictReader , но я хочу сделать это далеко. Как бы я go об этом без использования DictReader?

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Вы можете легко это сделать, используя встроенную функцию zip(), чтобы создать последовательность пар (ключ, значение), которые можно передать конструктору dict(), чтобы создать его для каждая строка данных:

from pprint import pprint

def readFile(reader):
    list1 = []
    header = next(reader).strip().split(',')
    for line in reader:
        row = dict(zip(header, line.strip().split(',')))
        list1.append(row)
    return list1

with open('people.csv') as file:
    list1 = readFile(file)
    pprint(list1, sort_dicts=False)

Вывод:

[{'name': 'Michael', 'job': 'Engineer', 'age': '35'},
 {'name': 'Katie', 'job': 'Doctor', 'age': '52'},
 {'name': 'Johnny', 'job': 'Physicist', 'age': '42'}]
0 голосов
/ 27 марта 2020

Вы можете использовать до , прочитать файл csv как фрейм данных , а затем преобразовать в словарь .

Как-то так :

import pandas as pd

data_in_dataframe = pd.read_csv('csv_file_name.csv')

data_in_dictionary = data_in_dataframe.to_dict()

# Now print the entries    
for entry in data_in_dictionary.keys():
    print(data_in_dictionary[entry])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...