字典方法而不是 exec 方法

A dictionary method instead of exec method

我有以下变量:

Output=[{'name': 'AnnualIncome', 'value': 5.0},
 {'name': 'DebtToIncome', 'value': 5.0},
 {'name': 'Grade', 'value': 'A'},
 {'name': 'Home_Ownership', 'value': 'Rent'},
 {'name': 'ID', 'value': 'ID'},
 {'name': 'InitialListing_Status', 'value': 'f'},
 {'name': 'JointFlag', 'value': 0.0},
 {'name': 'LateFeeReceived_Total', 'value': 5.0},
 {'name': 'LoanAmount', 'value': 5.0},
 {'name': 'OpenCreditLines', 'value': 5.0},
 {'name': 'Strategy', 'value': 'Reject'},
 {'name': 'Term', 'value': '60 months'},
 {'name': 'TotalCreditLines', 'value': 5000.0}]

这几乎就是我定义的函数的输出。

毫无疑问,我知道我的函数的输出将始终是 JointFlag 和 Strategy。至于Output中的其他变量,它们可能存在也可能不存在(甚至可能有更新的或顺序不同!)

我听说字典是比 exec 更好的方法,我只是想知道如何处理它。

在我定义的函数的末尾,它将包含以下字符串:

return JointFlag, Strategy

这是我目前正在使用的一个 exec 命令。

def execute():
    #Some random codes which leads to Output variable

    for Variable in range(len(Outputs)):
        exec(f"{list(Outputs[Variable].values())[0]} = r'{list(Outputs[Variable].values())[1]}'")
    return JointFlag, Strategy

您可以将 Output 转换为字典

variables = dict()

for item in Output:
    variables[item["name"]] = item["value"]

甚至

variables = dict( (item["name"],item["value"]) for item in Output )

然后使用

return variables["JointFlag"], variables["Strategy"]

def execute():
    Output = [
     {'name': 'AnnualIncome', 'value': 5.0},
     {'name': 'DebtToIncome', 'value': 5.0},
     {'name': 'Grade', 'value': 'A'},
     {'name': 'Home_Ownership', 'value': 'Rent'},
     {'name': 'ID', 'value': 'ID'},
     {'name': 'InitialListing_Status', 'value': 'f'},
     {'name': 'JointFlag', 'value': 0.0},
     {'name': 'LateFeeReceived_Total', 'value': 5.0},
     {'name': 'LoanAmount', 'value': 5.0},
     {'name': 'OpenCreditLines', 'value': 5.0},
     {'name': 'Strategy', 'value': 'Reject'},
     {'name': 'Term', 'value': '60 months'},
     {'name': 'TotalCreditLines', 'value': 5000.0}
    ]

    variables = dict()

    for item in Output:
        variables[item["name"]] = item["value"]

    #variables = dict((item["name"],item["value"]) for item in Output)
    print(variables)

    return variables["JointFlag"], variables["Strategy"]

execute()
def execute():
    my_dict={}
    for Variable in range(len(Output)):
        my_dict[list(Output[Variable].values())[0]] = list(Output[Variable].values())[1]
    return my_dict['JointFlag'],my_dict['Strategy']