Я пытаюсь сделать словарь из Excel. Я написал один код, но он не дает словарь, как ожидалось. Под одной картой политики все данные должны доходить до того, как приходит другая карта политики. Вы получите это из ожидаемого результата.
Это Excel:
![Sheet1.xlsx](https://i.stack.imgur.com/ANRMw.png)
Это мой ожидаемый результат:
res1= {'Nodeb_IN_New':{'policy_id':107,'default':'class-default','mplsa':['h10','h11','l12','l13','l14'],'mpls':['h1','h2','l1'],'qos':[7,5,4],'nokia':'dscp-fc-map','dscp':['ef','af41,'af11','af21','af31']},'Nokia_SRAN_S1-MME_X2_IN':{'policy_id':'102',default':",'mplsa':['h15','h16'],'mpls':['h1'],'qos':[7],'nokia':'dscp-fc-map','dscp':['ef','nc1']}}
Я написал такой код:
from xlrd import open_workbook
book = open_workbook('test.xlsx')
sheet = book.sheet_by_index(1)
# read header values into the list
keys = [sheet.cell(0, col_index).value for col_index in range(sheet.ncols)]
dict_list = []
for row_index in range(1, sheet.nrows):
d = {keys[col_index]: sheet.cell(row_index, col_index).value
for col_index in range(sheet.ncols)}
dict_list.append(d)
print (dict_list)
И получить другой вывод:
[{'policy_map': 'Nodeb_IN_New', 'policy_id': 107.0, 'default': 'class-default', 'class': 'mobility-platinum', 'mplsa': 'h10', 'mpls': 'h1', 'qos': 7.0, 'nokia': 'dscp-fc-map', 'dscp': "['ef']"}, {'policy_map': '', 'policy_id': '', 'default': '', 'class': 'mobility-gold-new', 'mplsa': 'h11', 'mpls': 'h2', 'qos': 5.0, 'nokia': 'dscp-fc-map', 'dscp': "['af41']"}, {'policy_map': '', 'policy_id': '', 'default': '', 'class': 'mobility-silver-new', 'mplsa': 'l12 l13 l14', 'mpls': 'l1', 'qos': 4.0, 'nokia': 'dscp-fc-map', 'dscp': "['af11', 'af21', 'af31']"}, {'policy_map': 'Nokia_SRAN_S1-MME_X2_IN', 'policy_id': 102.0, 'default': '', 'class': 'Nokia_SRAN_mobility_platinum', 'mplsa': 'h15 h16', 'mpls': 'h1', 'qos': 7.0, 'nokia': 'dscp-fc-map', 'dscp': "['ef', 'nc1']"}]
Пожалуйста, предложите лучший код для получения выходных данных.