在递归循环中追加到列表

时间:2016-02-01 07:34:18

标签: python recursion

我试图创建一个递归函数,它接受一个JSON字典并存储任何带有键名称的值' rate'进入清单。然后,我将获取该列表并找到最低值。我的代码现在看起来像这样,但是在列表中生成了多个空列表。

com.android.support:support-v4:23.0.0

4 个答案:

答案 0 :(得分:8)

您需要合并递归的结果,并将其返回:

def recurse_keys(df):
    rates = []
    for key, value in df.items():
        if key == 'rate':
            rates.append(value)
        if isinstance(df[key], dict):
            rates += recurse_keys(df[key])
    return rates

答案 1 :(得分:0)

  1. 使用递归调用的结果扩展结果列表
  2. 不要忘记返回结果
  3. 代码:

    def recurse_keys(df):
        rates = []
        for key, value in df.items():
            if key == 'rate':
                rates.append(value)
            if isinstance(df[key], dict):
                rates += recurse_keys(df[key])
        return rates
    

答案 2 :(得分:0)

您需要通过率作为费率,在每次递归中您都会创建新的费率列表。

def recurse_keys(df, rates=[]):
    for key, value in df.items():
        if key == 'rate':
            rates.append(value)
        if isinstance(df[key], dict):
            recurse_keys(df[key], rates)
    return rates

result = recurse_keys(df)
min(result)

答案 3 :(得分:0)

您还可以在递归函数之外初始化费率列表并将其传递给函数,因为list是一个可变数据结构,它将作为参考传递。像这样(虽然未经过测试):

def recurse_keys(df, rates):
    for key, value in df.items():
        if key == 'rate':
            rates.append(value)
        if isinstance(df[key], dict):
            recurse_keys(df[key], rates)

def calling_method():
    rates = [] 
    recurse_keys(df, rates)