用Python重构词典

2024-10-03 02:45:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我将向量自回归(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} 
}

这里的“风险值:1”目前是静态的

在第一个字典中,VAR输出中唯一的常量是第一个键日期。 日期的值每天都在变化

生命体征(BMI、BP、血糖、甲状腺功能、TF)可能随输入的新生命体征(体重、身高、BMI、BP、血糖)或完全不同的生命体征(胆固醇水平、心率、LDL)而变化。像这样:

{
 'Date': '2021-05-07',
 'weight': '170lbs',
 'height': '175cm',
 'BMI': 39.3252068004638,
 'BP': 104.530020707559225,
 'BloodSugar': 126.85415609085157,
 
} 

我想做一个函数来动态地重构字典。因此,我尝试创建一个函数,该函数将获取字典的所有键,并尝试在while循环中运行它,然后创建一个包含重要参数和值的字典,但没有成功

我已经在这个问题上坚持了很长时间,任何帮助都将不胜感激


Tags: 函数算法date字典valuevartf向量
3条回答

似乎是@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'))
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)

给你

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))

相关问题 更多 >