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



我尝试使用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"
        }   
    }
}

你可以做如下的事情。在方法调用中将迭代作为参数传递。验证调用迭代变量。

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)

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

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)

我的解决方案:

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

希望这对其他人有所帮助!

最新更新