Я пытаюсь создать выходной файл JSON, следуя уникальной структуре.Некоторые иерархии в JSON похожи, а другие немного отличаются.
Я попытался пересмотреть способ итерации кода, чтобы получить желаемый формат.
import os
import pandas as pd
from json import dump
root_dir=os.getcwd()
data_dir=os.path.join(root_dir,'Data')
filename='RowMapping.json'
volumes = list(range(1, 12))
durations= [6, 12, 24, 96]
qmap=[{'q1':[0, 13], 'q2':[16, 29], 'q3':[32, 45], 'q4':[48, 61]}, {'q1':[0, 25], 'q2':[28, 53], 'q3':[56, 81], 'q4':[84, 109]},{'q1':[0, 49], 'q2':[52, 101], 'q3':[104, 153], 'q4':[156, 205]}, {'q1':[0, 97], 'q2':[100, 197], 'q3':[200, 297], 'q4':[300, 397]}]
list_dictionary = []
mr={}
final_dictionary={}
region_sa = list(range(1, 3)) #vol 1
region_or = list(range(1, 2)) #vol 2
region_pr = list(range(1, 2)) #vol 3
region_hi = list(range(1, 2)) #vol 4
region_pi = list(range(1, 2)) #vol 5
region_ca = list(range(1, 15)) #vol 6
region_ak = list(range(1, 3)) #vol 7
region_mw = list(range(1, 5)) #vol 8
region_se = list(range(1, 3)) #vol 9
region_ne = list(range(1, 3)) #vol 10
region_tx = list(range(1, 4)) #vol 11
region_overall = [region_sa, region_or, region_pr, region_hi, region_pi, region_ca, region_ak, region_mw, region_se, region_ne, region_tx]
for i, val in enumerate(durations):
mr[val]={'map':qmap[i]}
for region in region_overall:
dictionary = {}
for i in region:
dictionary[i] = {'durations':mr}
list_dictionary.append(dictionary.copy())
for i, val in enumerate(volumes):
final_dictionary[int(val)]={'regions':list_dictionary[i]}
with open(os.path.join(data_dir,filename), 'w') as f:
dump(final_dictionary, f)
Текущий выводимый словарь:
{1: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
2: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
3: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
4: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
5: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
6: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
3: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
4: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
5: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
6: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
7: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
8: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
9: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
10: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
11: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
12: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
13: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
14: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
7: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
8: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
3: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
4: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
9: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
10: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}},
11: {'regions': {1: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
2: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}},
3: {'durations': {6: {'map': {'q1': [0, 13],
'q2': [16, 29],
'q3': [32, 45],
'q4': [48, 61]}},
12: {'map': {'q1': [0, 25],
'q2': [28, 53],
'q3': [56, 81],
'q4': [84, 109]}},
24: {'map': {'q1': [0, 49],
'q2': [52, 101],
'q3': [104, 153],
'q4': [156, 205]}},
96: {'map': {'q1': [0, 97],
'q2': [100, 197],
'q3': [200, 297],
'q4': [300, 397]}}}}}}}
Для первых 3 томов (1, 2 и 3 из 11 общих томов) я хочу обновить списки 'q1', 'q2', 'q3' и 'q4'быть "q1": [0, 9], "q2": [11, 20], "q3": [22, 31], "q4": [33, 42].
Для всехя хочу добавить элемент skiprows на уровне карты JSON.Для первых 3 томов значение «skiprows» будет равно 12, а для остальных томов значение «skiprows» равно 8. Я попытался сделать это, добавив / исправив следующие строки кода:
skiprows = [12]*3 + [8]*8
for vol in range(len(volumes)):
for i, val in enumerate(durations):
mr[val]={'map':qmap[i], 'skiprows':skiprows[i]}