如何简化python函数?

如何简化python函数?,python,json,python-3.x,Python,Json,Python 3.x,我想问一下,是否有人可以帮助我简化下面给出的代码 函数save_session()创建包含嵌套字典的字典,这些字典稍后将转储到.json文件中。下面显示的数据示例是函数代码 我知道这看起来不太好,我几乎可以肯定有更好的方法可以达到同样的效果。如有任何建议或提示,我将不胜感激 def save_session(): “”“将当前数据导出到.json文件。”“” 数据保存={} #添加训练计划 对于“训练”实例中的训练: 要保存的数据[workout.name]={} #添加培训 如有必要,培训:

我想问一下,是否有人可以帮助我简化下面给出的代码

函数
save_session()
创建包含嵌套字典的字典,这些字典稍后将转储到.json文件中。下面显示的数据示例是函数代码

我知道这看起来不太好,我几乎可以肯定有更好的方法可以达到同样的效果。如有任何建议或提示,我将不胜感激

def save_session():
“”“将当前数据导出到.json文件。”“”
数据保存={}
#添加训练计划
对于“训练”实例中的训练:
要保存的数据[workout.name]={}
#添加培训
如有必要,培训:
要保存的数据[训练.名称][“训练”]={}
对于训练中的训练。训练:
要保存的数据[训练.名称][“训练”][训练.名称]={}
#增加训练练习
如果培训。练习:
要保存的数据[训练.名称][“训练”][训练.名称][“训练”]={
exercise.name:{}用于training.exercises中的exercise
}
对于训练中的练习。练习:
如有需要,详情如下:
要保存的数据[workout.name][“trainings”][training.name][exercises'][exercise.name][
'details']={detail:value for detail,value in
exercise.details.items()}
#增加练习
如果锻炼。锻炼:
要保存的数据[训练.名称][“练习”]={}
练习保存=数据保存[训练.名称][“练习”]
对于锻炼中的锻炼。锻炼:
练习\u保存[exercise.name]={}
如有需要,详情如下:
细节=练习。细节
练习\-to \-save[exercise.name]['details']={detail:value for details,value in details.items()}

以下是一个冗余位

数据\u保存[训练.名称][“训练”][训练.名称][“练习”][练习.名称][
'details']={detail:value for detail,value in
exercise.details.items()}
这和我的情况一样


要保存的数据[训练.名称][“训练”][训练.名称]['exercises'][训练.名称]['details']=exercise.details
同样的

exercises\u保存[exercise.name]['details']={detail:value for detail,value in details.items()}
可以写成

exercises\u保存[exercise.name]['details']=details
我假设
details
实际上是读取对其调用的
items()
方法得到的
dict

如果这是正确的,那么可以使用字典理解编写一个更紧张但仍然可读的函数。您甚至可以删除要保存的
数据
名称,并返回一个由dictionary comprehension表达式组成的dictionary,但我发现它的可读性较差

def save_session():
“”“将当前数据导出到.json文件。”“”
数据保存=默认dict(dict)
#添加训练计划
对于“训练”实例中的训练:
#增加培训
如有必要,培训:
要保存的数据[训练名称][“训练”]={
培训名称:{
“练习”:{
exercise.name:exercise.details
用于训练中的锻炼
如果练习。详细信息
}
}if training.exercises else{}
用于训练中的训练
}
#增加练习
如果锻炼。锻炼:
要保存的数据[训练.名称][“练习”]={
练习名称:{
“详细信息”:exercise.details
}
if exercise.details else{}
在锻炼中锻炼
}

将是解决这一问题的最佳场所您是否有具体问题,或者您是否希望改进工作代码?#不过,在发布之前请先阅读。@PatrickArtner:它很有效,我尝试改进代码。
{
    "FBV - Full Body Workout": {
        "description": "short decription",
        "trainings": {
          "Training A": {
            "exercises": {
              "squats": {
                "details": {
                  "description": "squats with barbell",
                  "series": 4,
                  "repeats": 4
                  "load": 70
                }
              }
            }
          }
        },
        "exercises": {
            "some exercise name": {
                "details": {
                    "description": "some description",
                    "series": 5,
                    "repeats": 5,
                    "load": 60
                }
            },
            "bench press - wide": {
                "details": {
                    "description": "bench press with wide grip",
                    "series": 5,
                    "repeats": 5,
                    "load": 60
                }
            }
        }
    }
}