#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