我试图创建一个递归函数,它接受一个JSON字典并存储任何带有键名称的值' rate'进入清单。然后,我将获取该列表并找到最低值。我的代码现在看起来像这样,但是在列表中生成了多个空列表。
com.android.support:support-v4:23.0.0
答案 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)
代码:
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)