У меня есть эти действительно сложные файлы данных, которые я обработал, и, когда обрабатывается каждый файл, я использовал OrdDictionary для захвата ключей и значений.Каждый заказанный словарь добавляется в список, поэтому мой окончательный результат - список словарей.Из-за разнообразия данных, захваченных в этих файлах, у них много общих ключей, но достаточно необычных ключей, чтобы сделать экспорт данных в Excel более сложным, чем я надеялся, потому что мне действительно нужно выталкивать данные в согласованном виде.структура.
Каждый ключ имеет структуру, подобную
Q_#_SUB_A_COLUMN_#_NUMB_#
, поэтому, например, у меня есть
Q_123_SUB_D_COLUMN_C_NUMB_17
Мы можем перевести ключ следующим образом
Question 123
SubItem D
Column C
Instance 17
Поскольку существует подэлемент D, столбец C и экземпляр 17, должны быть SubItemA, столбец B и экземпляр 16
Однако один из исходных файлов может быть заполнен значениями данных (и ключами, которые находятся в диапазонедо приведенного выше примера, и некоторые другие исходные файлы могут заканчиваться
Q_123_SUB_D_COLUMN_C_NUMB_13
, поэтому, когда я перебираю список словарей, чтобы извлечь все экземпляры уникальных ключей, чтобы я мог использовать их в csv.dictwriter в качествезаголовки столбцов мой план состоял в том, чтобы отсортировать итоговый список уникальных заголовков столбцов, но я не могу заставить сортировку работать
speособенно мне нужно отсортировать так, чтобы результаты выглядели так:
Q_122_SUB_A_COLUMN_C_NUMB_1
Q_122_SUB_B_COLUMN_C_NUMB_1
Q_123_SUB_A_COLUMN_C_NUMB_1
Q_123_SUB_B_COLUMN_C_NUMB_1
Q_123_SUB_C_COLUMN_C_NUMB_1
Q_123_SUB_D_COLUMN_C_NUMB_1
dot
dot
dot
Q_123_SUB_A_COLUMN_C_NUMB_17
Q_123_SUB_B_COLUMN_C_NUMB_17
Q_123_SUB_C_COLUMN_C_NUMB_17
Q_123_SUB_D_COLUMN_C_NUMB_17
Большая проблема в том, что я не знаю, прежде чем открывать какой-либо конкретный набор этих файлов, сколько ответов дано, сколько подвопросовответы, сколько столбцов связано с каждым вопросом или подвопросом или сколько существует экземпляров какой-либо конкретной комбинации вопросов, подвопросов или столбцов, и я не хочу.Используя Python, я смог сократить более 1200 строк кода SAS до 95, но это последний маленький момент, прежде чем я начну записывать его в файл CSV, который я не могу понять.
Любые замечания приветствуются.
Мой план состоит в том, чтобы найти все уникальные ключи, просматривая список словарей, а затем правильно отсортировать эти ключи, чтобы я мог затем создать файл csv, используя ключи в качестве заголовков столбцов.Я знаю, что могу найти уникальные ключи, вытолкнуть их, вручную отсортировать, а затем прочитать отсортированный файл обратно, но это кажется неуклюжим.