在python

时间:2017-08-14 15:26:17

标签: python json

我在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变量只包含一个日期实例,它会在每个循环中覆盖自己。我做错了什么?

1 个答案:

答案 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

为什么不在那里找到实际的清单?可能有更优雅的方法来处理这个问题,但鉴于上面提到的信息,我认为至少应该为您提供一个有效的版本。