这种情况适用于Python 3 我有以下词典列表。
data = [
{'id': 'AAA',
'Temperature': 1.5,
'time_utc': 1514677434,
'longitude': 7.278415,
'latitude': 46.223831,
'altitude': 479},
{'id': 'BBB',
'Temperature': 1.5,
'time_utc': 1514677561,
'longitude': 7.269399,
'latitude': 46.21502,
'altitude': 555},
{'id': 'AAA',
'Temperature': 3.4,
'time_utc': 1514677667,
'longitude': 7.278415,
'latitude': 46.223831,
'altitude': 479},
{'id': 'BBB',
'Temperature': 2.5,
'time_utc': 1514677196,
'longitude': 7.269399,
'latitude': 46.21502,
'altitude': 555},
]
“ id”键是唯一的,因此我最终希望绘制每个“ id”(站)的温度时间序列。因此,所需的输出如下:
data = [
{'id': 'AAA',
'thermo_module': {'datetime': [{'time_utc': 1514677434}, {'time_utc': 1514677667}], 'Temperature': [1.5,3.4]}
'longitude': 7.278415,
'latitude': 46.223831,
'altitude': 479},
{'id': 'BBB',
'thermo_module': {'datetime': [{'time_utc': 1514677561}, {'time_utc': 1514677196}], 'Temperature': [1.5,2.5]}
'longitude': 7.269399,
'latitude': 46.21502,
'altitude': 555},
]
我真的不知道在这种情况下如何进行,至少任何提示都会受到高度赞赏。
答案 0 :(得分:2)
使用简单的迭代
演示:
import pprint
d = {}
for i in data:
if not i["id"] in d:
d[i["id"]] = {'id': i["id"], 'thermo_module':{'datetime':[{'time_utc': i["time_utc"]}], 'Temperature':[i["Temperature"]]}, 'longitude':i["longitude"], 'latitude':i["latitude"], 'altitude':i["altitude"]}
else:
d[i["id"]]['thermo_module']["datetime"].append({'time_utc': i["time_utc"]})
d[i["id"]]['thermo_module']["Temperature"].append(i["Temperature"])
pprint.pprint(d.values())
输出:
[{'altitude': 479,
'id': 'AAA',
'latitude': 46.223831,
'longitude': 7.278415,
'thermo_module': {'Temperature': [1.5, 3.4],
'datetime': [{'time_utc': 1514677434},
{'time_utc': 1514677667}]}},
{'altitude': 555,
'id': 'BBB',
'latitude': 46.21502,
'longitude': 7.269399,
'thermo_module': {'Temperature': [1.5, 2.5],
'datetime': [{'time_utc': 1514677561},
{'time_utc': 1514677196}]}}]