написать python список в пределах необходимости - PullRequest
0 голосов
/ 10 февраля 2020
import pprint
import xlsxwriter


def createDict():

people1 = {'name': 'John', 'age': '27', 'sex': 'Male', 'client': [
    {'name': 'Jamie', 'age': '22', 'sex': 'Male'}, {'name': 'Holly', 'age': '22', 'sex': 'Female'}]}
people2 = {'name': 'Marie', 'age': '22', 'sex': 'Female'}


workbook = xlsxwriter.Workbook('myfile.xlsx')
worksheet = workbook.add_worksheet()

row = 0
col = 0

for key in people1:
    row += 1
    # prints the keys for dicts
    worksheet.write(row, col, key)
    # prints the value for people 1
    worksheet.write(row, col + 1, people1[key])



# workbook.close()


createDict()

У меня есть этот код выше, и я пытаюсь напечатать результаты people1, как показано ниже:

name: John
age : 27
sex : male
client: name: jamie
    age: 22
    sex:male
    name: holly
    age: 22
    sex:female

Однако, я продолжаю получать эту ошибку:

TypeError: Unsupported type <class 'list'> in write()

Поскольку это список .. пожалуйста, помогите. Это небольшая часть моего словаря, и в некоторых случаях у меня могут быть намного большие данные, но концепция будет той же.

1 Ответ

1 голос
/ 10 февраля 2020

рекурсивное веселье c?

class ExcelWriter:

    row = 0

    def write_to_excel(self, value, col=0):
        if isinstance(value, dict):
            for k, v in value.items():
                self.write_to_excel(k, col)
                self.write_to_excel(v, col+1)
                self.row += 1
        elif isinstance(value, list):
            for item in value:
                self.write_to_excel(item, col)
                self.row += 1
        else:
            worksheet.write(row, col, value)

ExcelWriter().write_to_excel(people1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...