Создание списка объектов словаря из файла csv

#python #csv #dictionary

#python #csv #словарь

Вопрос:

Я пытаюсь создать список словарей из файла csv, аналогичного приведенному ниже

 name,age,gender  
jack,20,male  
rose,18,female 
 

чтобы словарь читал

 a= [{'name':'jack', 'age':20, 'gender':'male'}, {'name':'rose', 'age':18, 'gender':'female'}]
 

Однако мне не разрешено использовать DictReader или что-либо вроде reader (также не разрешено использовать ‘with’). Как я могу это сделать, используя самые простые инструкции?

Комментарии:

1. Запрет на использование with — довольно странное ограничение. Разрешено ли вам использовать open ? for ? in ? split ? strip ? list ? = ? Что именно подпадает под раздел «основные операторы»?

2. Да, разрешено использовать все из них. Мы еще не научились with , поэтому нам не разрешено его использовать, и я видел это во время поиска решения в Интернете

Ответ №1:

Прочитайте первую строку, чтобы составить список ключей, а затем выполните итерацию по оставшимся строкам, чтобы присвоить значения. Используется strip для удаления разрывов строк и любых других висячих пробелов, а split(",") также для разделения каждой строки.

 csv = open("titanic.txt")
keys = next(csv).strip().split(",")
print([{k: v for k, v in zip(keys, row.strip().split(","))} for row in csv])
csv.close()
 
 [{'name': 'jack', 'age': '20', 'gender': 'male'}, {'name': 'rose', 'age': '18', 'gender': 'female'}]
 

Эквивалентно, с csv.DictReader :

 from csv import DictReader

csv = open("titanic.txt")
print(list(DictReader(csv)))
csv.close()
 

Комментарии:

1. Спасибо! Есть ли способ сделать это без zip этого?

2. Существует, но если вы хотели, чтобы я написал это для вас, вы должны были включить это в список запрещенных слов. 🙂 Вы можете прочитать все о том, как это работает здесь, а затем решить, как переопределить его самостоятельно: tutorialsteacher.com/python/zip-method