Python - создание list of dicts в цикле
Форум — Development
Подскажите пожалуйста, возможно ли реализовать такую конструкцию?
Сейчас код выглядит так:
import unicodecsv as csv
file_path = 'main.csv'
def csv_reader(csv_file_name):
with open(csv_file_name, 'rb') as csvfile:
reader = csv.DictReader(csvfile)
csv_list = []
for row in reader:
csv_list.append({'FirstName':row['FileName'], 'SecondName':row['SecondName']})
print(row['FileName'], row['SecondName'])
return csv_list
el_list = csv_reader(file_path)
Так хочется что бы выглядел код:
import unicodecsv as csv
file_path = 'main.csv'
output_fields = ['FileName', 'SecondName']
def csv_reader(csv_file_name, output_fields):
with open(csv_file_name, 'rb') as csvfile:
reader = csv.DictReader(csvfile)
csv_list = []
for row in reader:
csv_list.append(dict(zip(output_fields[::1], row[output_fields[::1]])))
print(row[e] for e in output_fields)
return csv_list
el_list = csv_reader(file_path, output_fields)
т.е. основная задача при вставке в список элемента (каждый элемент это словарь) генерировать словарь исходя из списка ключей словаря, который передается параметром. Имена ключей словаря и мена полей - совпадают.
for row in reader:
csv_list.append({'FirstName':row['FileName'], 'SecondName':row['SecondName']})
print(row['FileName'], row['SecondName'])
for row in reader:
csv_list.append(dict(zip(output_fields[::1], row[output_fields[::1]])))
print(row[e] for e in output_fields)