【发布时间】:2020-12-26 14:20:54
【问题描述】:
我有一个值列表如下:
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”(int)、“month”(int)、“day”(int)、“hour”(int)、“reading1”(float)、“读数2”(浮点数),“最大值”(浮点数)。 预期输出:
{"id": "A0001", "name": "unnamed", "year": 2009, "month": 04, "day": 01, "hour": 00, "reading1": 146.5, "reading2": 146.75, "max": 181}
这些是按“dataHeader”顺序排列的固定输出(例如 dataPoint1)。如何将这些值映射到给定格式的字典?
我目前运行的代码如下。有没有其他方法可以做到这一点? 我们可以在时间或内存方面进行优化吗? zip 函数不起作用(对我而言),因为数据点和映射不按顺序排列并且由于类型转换。
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
【问题讨论】:
标签: python list dictionary mapping chronological