#python
Вопрос:
Мое задание таково:
Определите функцию с именем save_data с тремя параметрами. Первый параметр-это список строк (ключи, о которых мы заботимся). Вторым параметром будет список словарей, а последним параметром будет имя файла (строка). Эта функция должна открыть файл, указанный в третьем параметре, чтобы удалить содержимое файла. Убедитесь, что вы записали в файл, чтобы он был правильным CSV-файлом. Первой строкой для записи в файл будет содержимое первого параметра. (Вы МОЖЕТЕ предположить, что первый параметр не будет пустым, и вы МОЖЕТЕ предположить, что все словари будут содержать записи в первом параметре в качестве ключей.) Для каждого словаря во втором параметре необходимо записать значения, связанные с этими ключами (и только с этими ключами), в виде строки в файле. Порядок столбцов должен совпадать с порядком ключей в первом параметре. Порядок строк должен совпадать с порядком, в котором словари отображаются во втором параметре.
Например, если dl = [{«дата»: «07-31-2021», «местоположение»: «Нью-Йорк», «поддельные»: «данные»}, {«местоположение»: «Нью-Джерси», «дата»: «08-01-2021»}] Затем вызов save_data([‘дата’, ‘местоположение’], dl, ‘bore.csv’) приведет к тому, что файл с именем bore.csv будет содержать следующее содержимое:
дата,место
07-31-2021,Нью-Йорк
08-01-2021,Нью-Джерси
Моя текущая проблема заключается в попытке сопоставить столбцы с порядком списка в первом параметре. Мой текущий код:
def write_values (csvfile, list1): with open (csvfile, "a") as f: writer = csv.writer(f) for i in range(len(list1)): writer.writerow(list1[i]) def save_data (keys,lod,csvfile): outside = [] for i in lod: inside = [] for eachkey in i: if eachkey == keys[0]: inside.append (i[eachkey]) elif eachkey == keys[1]: inside.append (i[eachkey]) outside.append(inside) with open (csvfile, "a") as f: # writes header. write = csv.writer(f) write.writerow(keys) write_values (csvfile,outside) # writes the rest. return outside