обрабатывать значение ключа json (которое снова является dict) в список, xlsxwriter не принимает dict

У меня есть ситуация, когда в значении ключа json есть dict. Раньше у меня была только строка, целое число или число с плавающей запятой для значения ключа. Я мог бы взять все значения в список и заполнить их в excel с помощью модуля xlsxwriter с использованием Python:

names = list(data['items'][]['variants'].values())

Теперь значение моего ключа json имеет значение dict:

"foobar": {
    "agents": {
        "scenario": {
            "capacity": {
                "add": [
                    "sample"
                ],
                "signal": [
                    "all"
                ]
            },
            "eligibility": true,
            "read": false,
            "runAsUser": 0
        }
    },

Из-за этого мой скрипт выдает следующую ошибку:

Traceback (most recent call last):
  File "/root/virtualenvs/lib/python3.7/site-packages/xlsxwriter/worksheet.py", line 493, in _write
    f = float(token)
TypeError: float() argument must be a string or a number, not 'dict'
..............
.......................
.......................
    raise TypeError("Unsupported type %s in write()" % type(token))
TypeError: Unsupported type <class 'dict'> in write()

Есть ли способ, которым мы можем справиться с этой ситуацией. Моя цель - захватить этот диктант, поместить в список и заполнить, чтобы преуспеть.


person Samudrala Prasad    schedule 22.10.2020    source источник
comment
Вам просто нужно перебрать словарь и написать нужную ячейку за ячейкой. В XlsxWriter есть пример для более простого dict структура. Однако показанная выше структура имеет 5 уровней данных, поэтому вам нужно немного подумать о том, как вы хотите отобразить ее на 2D-листе в Excel.   -  person jmcnamara    schedule 22.10.2020
comment
спасибо за ваш быстрый ответ @jmcnamara ........ второй уровень является ключевым для меня, а остальная часть структуры ниже является ценностью. Я хочу, чтобы все это значение было элементом списка. что каждый элемент должен быть заполнен ячейками в excel   -  person Samudrala Prasad    schedule 22.10.2020
comment
Было бы хорошо дополнить ваш вопрос снимком экрана из Excel о том, как бы вы хотели, чтобы он выглядел. Так будет легче ответить.   -  person jmcnamara    schedule 22.10.2020


Ответы (1)


Наконец-то решена проблема с использованием карты:

names = list(map(json.dumps, data['items'][varients]['names'].values()))
person Samudrala Prasad    schedule 23.10.2020