我想问一下是否有人能帮我简化下面给出的代码。你知道吗
函数save_session()
创建带有嵌套字典的字典,这些字典稍后会转储到.json文件中。数据示例如下所示的函数代码。你知道吗
我知道这看起来不太好,我几乎可以肯定有更好的方法来获得同样的结果。如有任何建议或提示,我将不胜感激。你知道吗
def save_session():
"""Exports current data to .json file."""
data_to_save = {}
# add workout plans
for workout in workouts_instances:
data_to_save[workout.name] = {}
# add trainings
if workout.trainings:
data_to_save[workout.name]["trainings"] = {}
for training in workout.trainings:
data_to_save[workout.name]["trainings"][training.name] = {}
# add training exercises
if training.exercises:
data_to_save[workout.name]["trainings"][training.name]['exercises'] = {
exercise.name: {} for exercise in training.exercises
}
for exercise in training.exercises:
if exercise.details:
data_to_save[workout.name]["trainings"][training.name]['exercises'][exercise.name][
'details'] = {detail: value for detail, value in
exercise.details.items()}
# add exercises
if workout.exercises:
data_to_save[workout.name]["exercises"] = {}
exercises_to_save = data_to_save[workout.name]["exercises"]
for exercise in workout.exercises:
exercises_to_save[exercise.name] = {}
if exercise.details:
details = exercise.details
exercises_to_save[exercise.name]['details'] = {detail: value for detail, value in details.items()}
{
"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
}
}
}
}
}
以下是冗余位。你知道吗
这和我的想法是一样的
相同
可以写成
我假设
details
实际上是读取在它上面调用的items()
方法得到的dict
。你知道吗如果这是正确的,那么可以使用字典理解编写一个更时态但仍然可读的函数。您甚至可以去掉
data_to_save
名称并返回一个完全由dictionary comprehension表达式组成的dictionary,但我发现它的可读性较差。你知道吗相关问题 更多 >
编程相关推荐