Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
22 / 18 / 4
Регистрация: 28.07.2015
Сообщений: 167

Как развернуть вложенный словарь

28.11.2020, 17:58. Показов 9413. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Помогите с решением, уже всю голову себе сломал..

Есть словарь вида:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
test01 = {
    "success": 'true',
    "data": {
        "today_date": "2020-11-25",
        "auto_list": {
            "0": {
                "auto_id": "car01",
                "offense_list": {
                    "0": {
                        "gis_id": "0001",
                        "gis_status": "nopayed"},
                    "1": {
                        "gis_id": "0005",
                        "gis_status": "nopayed"}
                }
            },
            "1": {"auto_id": "car02",
                  "offense_list": {
                      "0": {
                          "gis_id": "0002",
                          "gis_status": "payed"},
                      "1": {
                          "gis_id": "0003",
                          "gis_status": "payed"},
                      "2": {
                          "gis_id": "0004",
                          "gis_status": "payed"}
                  }
                  }
        }
    }
}
Как из него получить вот такой вид:
Python
1
[{'gis_id': '0004', 'gis_status': 'payed', 'car': 'car2','date':'2020-11-25'}, {'gis_id': '0003', 'gis_status': 'payed', 'car': 'car2','date':'2020-11-25'}, {'gis_id': '0002', 'gis_status': 'payed', 'car': 'car2', 'date':'2020-11-25'}, {'gis_id': '0005', 'gis_status': 'notpayed', 'car': 'car1', 'date':'2020-11-25'}, {'gis_id': '0001', 'gis_status': 'notpayed', 'car': 'car1', 'date':'2020-11-25'}]
Заранее большое спасибо!

Добавлено через 3 часа 24 минуты
Может быть я в принципе не так подхожу.. Конечная цель занести данные в СКЛ колонки будут следующие: Car, Gis Status, Date, Gis ID.
Но без преобразования полученного словаря я я не знаю как достать все эти данные для записи. И чтобы при этом не потерялась принадлежность данных к машине.
Есть идеи?
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2020, 17:58
Ответы с готовыми решениями:

Вложенный словарь и как его изменить
Нужно создать базу данных по примеру Ее вид примерно следующий: ...

Внесение данных во вложенный словарь
как внести изменения во вложенный словарь используя данные из path_weight {'A': {}, 'B': {}, 'C': {}, 'D': {}, 'E': {}, 'F': {},...

Создать вложенный словарь из вложенного списка
Есть вложенный список с небольшой и не постоянной вложенностью типа ls=,,] нужно получить вложенный словарь вида value=0 ...

27
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,333
29.11.2020, 00:18
Студворк — интернет-сервис помощи студентам
Gdez, та же самая ошибка,
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
29.11.2020, 07:22
isaak, хорошо
Покажи, что выводит на печать
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def recursive(obj,lst):
        if isinstance(obj, dict):
            for key, value in obj.items():
                if isinstance(value, dict):
                    recursive(value,lst)
                else :
                    lst.append([key, value])
        return lst[::-1]
test01 = {
    "success": 'true',
    "data": {
        "today_date": "2020-11-25",
        "auto_list": {
            "0": {
                "auto_id": "car01",
                "offense_list": {
                    "0": {
                        "gis_id": "0001",
                        "gis_status": "nopayed"},
                    "1": {
                        "gis_id": "0005",
                        "gis_status": "nopayed"}
                }
            },
            "1": {"auto_id": "car02",
                  "offense_list": {
                      "0": {
                          "gis_id": "0002",
                          "gis_status": "payed"},
                      "1": {
                          "gis_id": "0003",
                          "gis_status": "payed"},
                      "2": {
                          "gis_id": "0004",
                          "gis_status": "payed"}
                  }
                  }
        }
    }
}
lst = []
tmp = recursive(test01,lst)
print(tmp)
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
29.11.2020, 10:59
А с джсоном-то не проще?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import json
 
 
class MyClass(object):
    def __init__(self, s):
        self.__dict__ = json.loads(s)
 
 
s = '''
{
  "success": "true",
  "data": {
    "today_date": "2020-11-25",
    "auto_list": {
      "0": {
        "auto_id": "car01",
        "offense_list": {
          "0": {
            "gis_id": "0001",
            "gis_status": "nopayed"
          },
          "1": {
            "gis_id": "0005",
            "gis_status": "nopayed"
          }
        }
      },
      "1": {
        "auto_id": "car02",
        "offense_list": {
          "0": {
            "gis_id": "0002",
            "gis_status": "payed"
          },
          "1": {
            "gis_id": "0003",
            "gis_status": "payed"
          },
          "2": {
            "gis_id": "0004",
            "gis_status": "payed"
          }
        }
      }
    }
  }
}
 
'''
obj = MyClass(s)
for item in obj.data['auto_list']:
    print(obj.data['auto_list'][item])
Bash
1
2
{'auto_id': 'car01', 'offense_list': {'0': {'gis_id': '0001', 'gis_status': 'nopayed'}, '1': {'gis_id': '0005', 'gis_status': 'nopayed'}}}
{'auto_id': 'car02', 'offense_list': {'0': {'gis_id': '0002', 'gis_status': 'payed'}, '1': {'gis_id': '0003', 'gis_status': 'payed'}, '2': {'gis_id': '0004', 'gis_status': 'payed'}}}
Ну и т.д.
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,333
29.11.2020, 11:57
Цитата Сообщение от Gdez Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def recursive(obj,lst):
        if isinstance(obj, dict):
            for key, value in obj.items():
                if isinstance(value, dict):
                    recursive(value,lst)
                else :
                    lst.append([key, value])
        return lst[::-1]
test01 = {
    "success": 'true',
    "data": {
        "today_date": "2020-11-25",
        "auto_list": {
            "0": {
                "auto_id": "car01",
                "offense_list": {
                    "0": {
                        "gis_id": "0001",
                        "gis_status": "nopayed"},
                    "1": {
                        "gis_id": "0005",
                        "gis_status": "nopayed"}
                }
            },
            "1": {"auto_id": "car02",
                  "offense_list": {
                      "0": {
                          "gis_id": "0002",
                          "gis_status": "payed"},
                      "1": {
                          "gis_id": "0003",
                          "gis_status": "payed"},
                      "2": {
                          "gis_id": "0004",
                          "gis_status": "payed"}
                  }
                  }
        }
    }
}
lst = []
tmp = recursive(test01,lst)
print(tmp)[
Все работает без ошибок, спасибо.
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.11.2020, 13:36
Цитата Сообщение от iSmokeJC Посмотреть сообщение
А с джсоном-то не проще?
У ТС и так изначально JSON. Просто он не очень понимает разницу между Python dict и JSON.
0
29.11.2020, 13:47

Не по теме:

Цитата Сообщение от Garry Galler Посмотреть сообщение
изначально JSON
Так и я о том же...

0
22 / 18 / 4
Регистрация: 28.07.2015
Сообщений: 167
29.11.2020, 16:29  [ТС]
Расшифруйте пожалуйста вот это место

def map_car(car: dict) -> list:
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
29.11.2020, 17:35
Аннотация типов - подсказка для IDE о типах входных параметров и типе результата функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2020, 17:35

Мульти словарь или как генерировать словарь в словаре
Добрый день. Есть большое количество данных, которое на хочется перебирать, и появилась проблема: есть список - как сделать так что...

Как лучше добавить в словарь другой словарь?
Добрый день! Как лучше добавить вложенный словарь new_dict в stat_obj? data = {'stat_obj':''} data = {'E-1':{'name':'E-1'}} ...

Сформировать словарь с ключами, а значения должен быть двумерных (вложенный) кортеж
Вводятся числа в одну строчку в формате: 1;3 4 5;2 4 3 4;1;6 8 10; … То есть, здесь группы чисел, разделенных точкой с запятой. Одно...

Вложенный словарь kdrama_info
Пожалуйста, помогите разобраться с задачей, битый час сижу с этой последней таской, завтра сдача You have a nested dictionary...

Составной/вложенный тип + словарь
Добрый вечер. Помогите, пожалуйста, написать код для следующей задачи: есть Завод1, Завод2...и т.д., у каждого завода набор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru