我收到矢量AutoRegression (VAR)算法的输出作为数据帧,并将其转换为字典,给出了以下结构:
{
'Date': '2021-05-07',
'BMI': 40.53002073252068,
'BP': 123.00463807559225,
'BloodSugar': 126.85415609085157,
'ThyroidFunction': 3.0,
'TF': 5.0
} 我想以这样的形式重组它:
# {Vital : {date : value, risk_value : 1}}
{
'BMI' : {'2021-05-07' : 40.53002073252068, risk_value : 1},
'BP': {'2021-05-07' : 123.00463807559225, risk_value : 1},
'BloodSugar' :{'2021-05-07' : 126.85415609085157, risk_value : 1},
'ThyroidFunction' : {'2021-05-07' : 3.0, risk_value:1},
'TF' : {'2021-05-07' : 5.0, risk_value:1}
}这里的"risk_value : 1“暂时是静态的。
在第一个字典中,VAR输出中唯一的常量是第一个key- date。date的值每天都会改变。
体重指数( BMI )、血压指数( BP )、低密度脂蛋白( BloodSugar )、低密度脂蛋白( ThyroidFunction )、转铁蛋白( TF)可以随着新的生命指标(体重、身高、体重指数、血压、BloodSugar)或完全不同的生命指标(cholestrolLevel、HeartRate、LDL)的输入而变化。如下所示:
{
'Date': '2021-05-07',
'weight': '170lbs',
'height': '175cm',
'BMI': 39.3252068004638,
'BP': 104.530020707559225,
'BloodSugar': 126.85415609085157,
} 我想做一个动态重构字典的函数。因此,我尝试创建一个函数,该函数将获取字典中的所有键,并尝试通过while循环运行它,然后创建一个包含生命体征和值的字典,但未成功。
我在这方面已经坚持了很长一段时间,任何帮助都将不胜感激。
发布于 2021-04-09 23:59:05
your_dict = {
'Date': '2021-05-07',
'BMI': 40.53002073252068,
'BP': 123.00463807559225,
'BloodSugar': 126.85415609085157,
'ThyroidFunction': 3.0,
'TF': 5.0
}
def parse_dict(dict_in):
dictionary = {}
for x in dict_in:
if x != 'Date':
dictionary[x] = {dict_in['Date']: dict_in[x], 'risk_value': 1}
return dictionary
dict_out = parse_dict(your_dict)发布于 2021-04-10 00:07:52
似乎@peter比我先一步,但既然我已经烦恼了.
def foo(some_dict, **kwargs):
ret = {}
date_key = some_dict.pop('Date')
for k, v in some_dict.items():
ret[k] = {date_key: v}
ret[k].update(kwargs)
return ret
d = {
'Date': '2021-05-07',
'weight': '170lbs',
'height': '175cm',
'BMI': 39.3252068004638,
'BP': 104.530020707559225,
'BloodSugar': 126.85415609085157,
}
from pprint import pprint
pprint(foo(d, risk_value=42, abc='x'))发布于 2021-04-10 01:39:39
这就是你要的!
def restructure (dct):
date = dct['Date'] #store the date
dct.pop('Date') #remove 'Date' key from the dict since it not needed anymore
for key, value in dct.items():
dct[key] = {date:value, 'risk_value' : 1} #update values for each key
return dct
print(restructure(d))https://stackoverflow.com/questions/67024121
复制相似问题