如何跟踪字典中的下一个项目(递归循环)

时间:2019-06-03 09:14:43

标签: python dictionary recursion

我尝试使用enumeration()i var来跟踪递归函数,不幸的是,这些值具有误导性。我想知道,是否有一种方法可以知道何时对第一个项目完成循环并进入了下一个项目。注意,我正在嵌套字典上尝试此操作。预先感谢。

def recursive_loop_dict(d = None): 
    for k,v in d.items(): 
        if isinstance(v, (dict, OrderedDict)): 
            recursive_loop(v) 
         else: 
            print(k, v)

一旦循环并处理了第一个项目,我就知道它已经递归了,我怎么知道它已经移到第二个项目(00002)了?

示例JSON:

{
    "000001" : {
        "title": "Microsoft", 
        "website": "http://www.microsoft.com", 
        "extra": {
            "tags": "MS, Microsoft, Bill Gates"
        }   
    }, 
    "000002" : {
        "title": "YouTube", 
        "website": "http://www.youtube.com", 
        "extra": {
            "tags": "tube, video, stream"
        }   
    }
}

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作。在方法调用中将迭代作为参数传递。验证调用迭代变量。

def recursive_loop_dict(d = None, it = 0): 
    if it == 1:
        print('This is second iteration')
    for i, (k,v) in enumerate(d.items()): 
        if isinstance(v, (dict, OrderedDict)): 
            recursive_loop(v, i) 
        else: 
            print(k, v)


答案 1 :(得分:1)

另一种方法是使用列表作为默认参数:

def recursive_loop_dict(d = None,i=[],start=True):
    for k,v in d.items():
        if start:
            i.append(k)
        if isinstance(v, dict):
            recursive_loop_dict(v,start=False)
        else:
            print(len(i), k, v)

答案 2 :(得分:0)

我的解决方案:

for n in items: 
   # Do something ...
else: 
   # The magic goes here ... 

希望这对其他人有帮助!