我正在使用Python3.6(尤其是Django),并且需要解决以下情况。
我有一个列表字典,该列表作为以前使用的函数返回的输出返回给我,就像这样:
{'sensor_state_list': ['in_service', 'in_service'],
'rx_sensor_delta_list': [0, 321144],
'tx_sensor_delta_list': [0, 321144],
'discard_sensor_delta_list': [0, 321144],
'time_list': ['2019-03-08 10:30:11.049860+00:00',
'2019-03-08 12:47:16.722241+00:00']}
如您所见,它包含5个列表,其中包含相似数据的集合。
我打算做的是同时从每个列表中选取一个实例,并将其存储为该特定实例的集合,并将其存储为字典,这样我就可以将其作为我的API输出并用于图表。 / p>
输出是欲望,类似于:
{'instance1' :
{'sensor_state' : 'in_service', 'rx_sensor_delta': 0, 'tx_sensor_delta': 0, 'discard_sensor_delta': 0, 'time': '2019-03-08 10:30:11.049860+00:00'},
'instance2':
{'sensor_state' : 'in_service', 'rx_sensor_delta': 321144, 'tx_sensor_delta': 321144, 'discard_sensor_delta': 123451, 'time': '2019-03-08 12:47:16.722241+00:00'}
,依此类推,随着源列表中实例数的增加。
答案 0 :(得分:0)
假设所有值的长度相同,则可以进行字典理解:
d = {'sensor_state_list': ['in_service', 'in_service'],
'rx_sensor_delta_list': [0, 321144],
'tx_sensor_delta_list': [0, 321144],
'discard_sensor_delta_list': [0, 321144],
'time_list': ['2019-03-08 10:30:11.049860+00:00',
'2019-03-08 12:47:16.722241+00:00']}
c = len(d['sensor_state_list'])
output = {f'instance{i+1}': {'_'.join(k.rsplit('_', 2)[:-1]): v[i] for k, v in d.items()} for i in range(c)}
# {'instance1': {'sensor_state': 'in_service', 'rx_sensor_delta': 0, 'tx_sensor_delta': 0, 'discard_sensor_delta': 0, 'time': '2019-03-08 10:30:11.049860+00:00'},
# 'instance2': {'sensor_state': 'in_service', 'rx_sensor_delta': 321144, 'tx_sensor_delta': 321144, 'discard_sensor_delta': 321144, 'time': '2019-03-08 12:47:16.722241+00:00'}}