我尝试使用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 ...
希望这对其他人有所帮助!