zilevsky
@zilevsky

Как собрать список списков из json?

Приветствую.
Подскажите как собрать из json нужный формат списка списков.
Перепробовал кучу вариантов циклов в циклах и пр. Не могу сообразить.

JSON
fin_json = [
  {
    "periodName": "2016",
    "balance": {
      "PeriodName": "2016",
      "DateBegin": "2016-01-01",
      "DateEnd": "2016-12-31",
      "StringList": {
        "String": [
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Нематериальные активы",
            "Code": "1110",
            "Value": "12586072000",
            "IdFinPok": "1"
          },
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Основные средства",
            "Code": "1150",
            "Value": "173143347000",
            "IdFinPok": "5"
          }
        ]
      }
    }
  },
  {
    "periodName": "2017",
    "balance": {
      "PeriodName": "2017",
      "DateBegin": "2017-01-01",
      "DateEnd": "2017-12-31",
      "StringList": {
        "String": [
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Нематериальные активы",
            "Code": "1110",
            "Value": "11674000000",
            "IdFinPok": "1"
          },
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Основные средства",
            "Code": "1150",
            "Value": "167765000000",
            "IdFinPok": "5"
          },
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Долгосрочные финансовые вложения",
            "Code": "1170",
            "Value": "227960000000",
            "IdFinPok": "12"
          }
        ]
      }
    }
  },
  {
    "periodName": "2018",
    "balance": {
      "PeriodName": "2018",
      "DateBegin": "2018-01-01",
      "DateEnd": "2018-12-31",
      "StringList": {
        "String": [
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Нематериальные активы",
            "Code": "1110",
            "Value": "13421000000",
            "IdFinPok": "1"
          },
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Основные средства",
            "Code": "1150",
            "Value": "173851000000",
            "IdFinPok": "5"
          },
          {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Долгосрочные финансовые вложения",
            "Code": "1170",
            "Value": "283323000000",
            "IdFinPok": "12"
          },
		  {
            "Form": "Баланс",
            "Section": "Актив",
            "Name": "Прочие внеоборотные активы",
            "Code": "1190",
            "Value": "7100000000",
            "IdFinPok": "18"
          }
        ]
      }
    }
  }
]


Список который должен получиться
items = [
        ['Нематериальные активы', '1110', '12586072000', '11674000000', '13421000000'],
        ['Основные средства', '1150', '173143347000', '167765000000', '13421000000'],
        ['Долгосрочные финансовые вложения', '1170', 'None', '227960000000', '283323000000'],
        ['Прочие внеоборотные активы', '1190', 'None', 'None', '7100000000']
    ]


В итоге я хочу получить вот такую таблицу на фронте
62a040010c69e014538177.png
  • Вопрос задан
  • 506 просмотров
Решения вопроса 1
0xD34F
@0xD34F
items_dict = {}

for i in range(len(data)):
  for n in data[i]['balance']['StringList']['String']:
    if n['Code'] not in items_dict:
      items_dict[n['Code']] = [ n['Name'], n['Code'], *[ 'None' ] * len(data) ]

    items_dict[n['Code']][i + 2] = n['Value']

items_arr = list(items_dict.values())
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы