下面的词典列表是我的数据集的简短切口。每个列表都包含一个站点上测得的数据。然后将每个测量值放入单独的词典中。原始数据集包含更多的站点,每个站点包含更多的字典。
results =[[{'value': 14.6,'timestamp_measured': '2017-12-31T20:00:00+00:00',
'station_number': 'NL1','formula': 'PM10'},
{'value': 16.6, 'timestamp_measured': '2017-12-31T21:00:00+00:00',
'station_number': 'NL1', 'formula': 'PM10'}],
[{'value': 27.2, 'timestamp_measured': '2017-12-31T20:00:00+00:00',
'station_number': 'NL2','formula': 'PM10'},
{'value': 19.0, 'timestamp_measured': '2017-12-31T21:00:00+00:00',
'station_number': 'NL2','formula': 'PM10'}]]
我希望每个“ station_number”只有一个字典,而不是每个测量值都有单独的字典,其中包含“公式”和所有测量值的列表:
results = {'station_number': 'NL1', 'formula': 'PM10', 'value': [14.6, 16.6]},
{'station_number': 'NL2', 'formula':'PM10', 'value': [27.2, 19.0]},
什么是Python方式做到这一点?
答案 0 :(得分:0)
stations = {}
for lst in results:
for d in lst:
if d['station_number'] not in stations:
stations[d['station_number']] = {
'formula': d['formula'],
'timestamp_measured': [],
'value': []
}
stations[d['station_number']]['timestamp_measured'].append(d['timestamp_measured'])
stations[d['station_number']]['value'].append(d['value'])
键是站号,因此:
for k, v in stations.items():
print('{}:\n{}'.format(k, v))
将打印:
NL1:
{'formula': 'PM10', 'timestamp_measured': ['2017-12-31T20:00:00+00:00', '2017-12-31T21:00:00+00:00'], 'value': [14.6, 16.6]}
NL2:
{'formula': 'PM10', 'timestamp_measured': ['2017-12-31T20:00:00+00:00', '2017-12-31T21:00:00+00:00'], 'value': [27.2, 19.0]}
答案 1 :(得分:0)
让我们从您想要获得的内容开始:站点字典,其中每个站点的值是一个字典,其中包含每个报告中value
的列表。因此,首先收集常数部分,然后将值收集在列表中:
new_stations = dict()
for station in results:
# Copy the fixed info
fixed = station[0]
name = fixed["station_number"]
this_station = { "formula": fixed["formula"],
"station_number": name,
"value": []
}
# Now collect the values
for record in station:
this_station["value"].append(record["value"])
# Save the station in our main dict
new_stations[name] = this_station