我在python中有以下代码:
def myprint(d):
date_list = ""
for k, v in d.iteritems():
if isinstance(v, dict):
myprint(v)
else:
if (k == "date"):
date_list = date_list + " " + v
print date_list
firebase = firebase.FirebaseApplication('https://my-firebase-db-958b1.firebaseio.com/', None)
result = firebase.get('/Dublin-Ireland', None)
myprint(result)
我通过多级json读取并提取名为" date"的键的值。我试图收集json中的所有日期并将它们存储在名为date_list的变量中。当我执行上面的代码时,date_list变量只包含一个日期实例,它会在每个循环中覆盖自己。我做错了什么?
答案 0 :(得分:0)
您将重新返回myprint函数,其中date_list变量被重新分配为空字符串。您需要在函数中提供该变量作为输入参数,并且您需要返回列表而不是打印它。
像这样......
def myprint(d, date_list=None):
if not date_list:
date_list = ''
for k, v in d.iteritems():
if isinstance(v, dict):
date_list = myprint(v, date_list)
else:
if (k == "date"):
date_list = date_list + " " + v
return date_list
为什么不在那里找到实际的清单?可能有更优雅的方法来处理这个问题,但鉴于上面提到的信息,我认为至少应该为您提供一个有效的版本。