我有嵌套的字典。像這樣我從 Api 獲取這些資料,這不過是 data_response:
{
"Parameter_1": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
},
"Parameter_2": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
}
這是我做的代碼:
data = []
for parameter in parameters:
for key, values in data_response.items():
for key1, value in values.items():
date = key1.split(" ")[0]
value_list = [value for key1, value in values.items()]
data.append(value_list)
我在資料中得到的輸出只是值:
資料:[[319.56,319.56,319.56,335.48,335.48,335.48,355.45,355.45,355.45]]
我希望得到 key 的值,只有一個日期。預期輸出為:
預期輸出 1:
{
"Parameter_1": {
"2021-11-16: [319.56,319.56,319.56],
"2021-11-17": [335.48,335.48,335.48],
"2021-11-18": [355.45,355.45,355.45],
},
"Parameter_2": {
"2021-11-16": [319.56,319.56, 319.56],
"2021-11-17": [335.48,335.48,335.48],
"2021-11-18": [355.45,355.45,355.45],
}
預期輸出 2:
Date:
[
parameter1[2021-11-16][2021-11-17][2021-11-18],
parameter2[2021-11-16][2021-11-17][2021-11-18]
]
Values:
[
parameter1[319.56,319.56,319.56][335.48,335.48,335.48][355.45,355.45,355.45],
parameter2[319.56,319.56,319.56][335.48,335.48,335.48][355.45,355.45,355.45]
]
你能幫我實作我的輸出嗎?
uj5u.com熱心網友回復:
我想這就是你要找的:
d = {
"Parameter_1": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
},
"Parameter_2": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
}}
r = dict()
for k, v in d.items():
r[k] = dict()
for k_, v_ in v.items():
r[k].setdefault(k_[:10], []).append(v_)
print(r)
輸出:
{'Parameter_1': {'2021-11-16': [319.56, 319.56, 319.56], '2021-11-17': [335.48, 335.48, 335.48], '2021-11-18': [355.45, 355.45, 355.45]}, 'Parameter_2': {'2021-11-16': [319.56, 319.56, 319.56], '2021-11-17': [335.48, 335.48, 335.48], '2021-11-18': [355.45, 355.45, 355.45]}}
uj5u.com熱心網友回復:
這是非常干凈的資料,Pandas 可以很好地處理它:
import pandas as pd
data = {
"Parameter_1": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
},
"Parameter_2": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
}
df = pd.DataFrame(data).reset_index()
df['index'] = pd.to_datetime(df['index']).dt.date.astype(str)
output = df.groupby('index').agg(list).to_dict()
print(output)
輸出:(手動添加格式)
{
'Parameter_1': {
'2021-11-16': [319.56, 319.56, 319.56],
'2021-11-17': [335.48, 335.48, 335.48],
'2021-11-18': [355.45, 355.45, 355.45]
},
'Parameter_2': {
'2021-11-16': [319.56, 319.56, 319.56],
'2021-11-17': [335.48, 335.48, 335.48],
'2021-11-18': [355.45, 355.45, 355.45]
}
}
uj5u.com熱心網友回復:
from typing import Dict, List
def output_expected_1(json: Dict[str, Dict[str, float]]) -> Dict[str, Dict[str, List[float]]]:
"""Parse the input json argument and return required output which is a
dictionary with a label key and a value of a list of floats. The datatime string is
truncated from YYYY-MM-DD HH:MM:SS to YYYY-MM-DD (date).
Given the arg json as:
{
"Parameter_1": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
},
"Parameter_2": {
"2021-11-16 14:29:00": 319.56,
"2021-11-16 15:16:00": 319.56,
"2021-11-16 15:17:00": 319.56,
"2021-11-17 00:00:00": 335.48,
"2021-11-17 00:01:00": 335.48,
"2021-11-17 00:02:00": 335.48,
"2021-11-18 00:00:00": 355.45,
"2021-11-18 00:01:00": 355.45,
"2021-11-18 00:03:00": 355.45,
}
}
Output would be:
{
'Parameter_1': {
'2021-11-16': [319.56, 319.56, 319.56],
'2021-11-17': [319.56, 319.56, 319.56],
},
'Parameter_2': {
'2021-11-19': [319.56, 319.56, 319.56],
'2021-11-22': [319.56, 319.56, 319.56],
},
}
"""
output_dict = {}
nested_dict = {}
for label, content in json.items():
for each_date_time, each_float in content.items():
if not each_date_time[:10] in nested_dict.keys():
nested_dict[each_date_time[:10]] = []
nested_dict[each_date_time[:10]] = nested_dict[each_date_time[:10]].append(
each_float) or nested_dict[each_date_time[:10]]
output_dict[label] = nested_dict
nested_dict = {}
return output_dict
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470703.html
上一篇:在excel中寫一個串列,其中每個元素都在一個單獨的單元格中
下一篇:獲取有關檔案夾及其檔案的詳細資訊