将列表中的值映射到已知的字典格式,而不按时间顺序

问题描述

我的值列表如下:

dataPoint1 = ["unnamed","A0001","2009-04-01 00:01","HT","146.5","146.75","FromTestDevice0001","181"]

此列表的格式为

 dataHeader = [Name,ID,DateTime,TypeOfDevice,Reading1,Reading2,Comment,Max Value]

我需要将这些值以以下格式放入字典中; “ id”(字符串),“ name”(字符串),“ year”(整数),“ month”(整数),“ day”(整数),“ hour”(整数),“ reading1”(float),“ reading2”(浮动),“ max”(浮动)。 预期的输出:

{"id": "A0001","name": "unnamed","year": 2009,"month": 04,"day": 01,"hour": 00,"reading1": 146.5,"reading2": 146.75,"max": 181}

这些是固定输出(例如dataPoint1),顺序为“ dataHeader”。如何将这些值映射为给定格式的字典?

我当前运行的代码如下。有没有其他方法可以做到这一点? 我们可以在时间上还是在内存方面优化它吗? zip函数不起作用(对我而言),因为dataPoints和映射不正确且归因于类型转换。

def parse_data(dataPoint):
  "This function maps dataPoints to a dictionary"
  data_dictionary = dict()

  if dataPoint[1] != '':
      data_dictionary['id'] = dataPoint[1]

  if dataPoint[0] != '':
      data_dictionary['name'] = dataPoint[0]

  if dataPoint[2] != '':
      data_dictionary['year'] = int(dataPoint[2][:4])
      data_dictionary['month'] = int(dataPoint[2][5:7])
      data_dictionary['day'] = int(dataPoint[2][8:10])
      data_dictionary['hour'] = int(dataPoint[2][11:13])

  if dataPoint[4] != '':
      data_dictionary['reading1'] = float(dataPoint[4])

  if dataPoint[5] != '':
      data_dictionary['reading2'] = float(dataPoint[5])

  if dataPoint[7] != '':
      data_dictionary['max'] = float(dataPoint[7])

  return data_dictionary

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)