需要从不同的列表中选择单个元素并将其存储在字典中

时间:2019-03-09 05:53:25

标签: python django python-3.6

我正在使用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'}

,依此类推,随着源列表中实例数的增加。

1 个答案:

答案 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'}}