#python #arrays #json #python-3.x #list
#питон #массивы #json #python-3.x #Список
Вопрос:
Итак, у меня есть код, который преобразует мое дерево категорий в список, и я хотел преобразовать его в CSV/json. У каждого элемента в списке может быть больше идентификаторов, как показано ниже.
def paths(tree): tree_name = next(iter(tree.keys())) if tree_name == 'children': for child in tree['children']: for descendant in paths(child): yield (tree['id'],) descendant else: yield (tree['id'],) pprint.pprint(list(paths(tree)))
Выход
[(461123, 1010022280, 10222044, 2222871,2222890), (461123, 129893, 119894, 1110100250), (461123, 98943, 944894, 9893445), (461123, 9844495)]
Есть ли какой-либо способ улучшить свой код или создать другой код, который преобразует список в json, который выглядит ниже вывода?
Output should look like this { { "column1": "462312", "column2": "1010022280", "column3": "10222044", "column4": "2222871", "column5": "2222890" }, { "column1": "461123", "column2": "129893", "column3": "119894", "column4": "1110100250" } and so on... }
если csv должен выглядеть так. ** Может быть до столбца 10
колонка1 | колонка2 | колонка3 | колонка4 |
---|---|---|---|
461123 | 129893 | 119894 | 1110100250 |
461123 | 129893 | 119894 |
Ответ №1:
Ниже приведен код для преобразования списка кортежей в список dict, который вы можете преобразовать в json, а вторая функция преобразует данные в csv
data = [(461123, 1010022280, 10222044, 2222871,2222890), (461123, 129893, 119894, 1110100250), (461123, 98943, 944894, 9893445), (461123, 9844495)] def convert_to_list_of_dicts(data): output_list = [] for i in data: data_dict = {} for count,j in enumerate(i) : data_dict["column" str(count 1)] = j output_list.append(data_dict) return output_list # print(convert_to_list_of_dicts(data)) def convert_to_csv(data): max_column_num = 0 for i in data: if len(i) gt; max_column_num: max_column_num = len(i) columns = ["column" str(i 1) for i in range(max_column_num)] newdata = [tuple(columns)] for tup in data: newdata.append(tup) with open('output.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerows(newdata) # convert_to_csv(data)