首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中重新构建字典

在Python中重新构建字典
EN

Stack Overflow用户
提问于 2021-04-09 23:37:02
回答 3查看 52关注 0票数 1

我收到矢量AutoRegression (VAR)算法的输出作为数据帧,并将其转换为字典,给出了以下结构:

代码语言:javascript
复制
{
'Date': '2021-05-07',
 'BMI': 40.53002073252068,
 'BP': 123.00463807559225,
 'BloodSugar': 126.85415609085157,
 'ThyroidFunction': 3.0,
 'TF': 5.0
} 

我想以这样的形式重组它:

代码语言:javascript
复制
# {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)的输入而变化。如下所示:

代码语言:javascript
复制
{
 'Date': '2021-05-07',
 'weight': '170lbs',
 'height': '175cm',
 'BMI': 39.3252068004638,
 'BP': 104.530020707559225,
 'BloodSugar': 126.85415609085157,
 
} 

我想做一个动态重构字典的函数。因此,我尝试创建一个函数,该函数将获取字典中的所有键,并尝试通过while循环运行它,然后创建一个包含生命体征和值的字典,但未成功。

我在这方面已经坚持了很长一段时间,任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2021-04-09 23:59:05

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2021-04-10 00:07:52

似乎@peter比我先一步,但既然我已经烦恼了.

代码语言:javascript
复制
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'))
票数 0
EN

Stack Overflow用户

发布于 2021-04-10 01:39:39

这就是你要的!

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67024121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档