这是我的代码:
<div class="party">
<div class="dance">
<h2 id="head">Your Party begins here</h2>
<p id="intro1">Start dancing</p>
<a id="starter" href="#" >Dance now</a> </div>
<a id="main" href="#"><img class="img-responsive" src="images/default.jpg" alt="main image"></a>
首先for parseparent in allgroups:
for groupPerm in self.permissions["groups"][parseparent]["permissions"]:
if self.permissions["groups"][parseparent]["permissions"][groupPerm] and (groupPerm not in allgroups):
allgroups.append(group)
print("found a child- shall we do again?")
将是一个布尔值,因此我的if语句实际上是&#34;如果是真和(groupPerm不在所有组中):&#34;。通常情况下,权限将不存在,除非它是真的,但有时它们 设置为False。
我的问题是,如果我们到达print语句,我需要重新运行此循环,因为所有组现在都有一个列表的新成员。这些嵌套的范围没有预先确定的限制,因此我不能像范围那样进行一定数量的迭代。
我的解决方案是,当我到达self.permissions["groups"][parseparent]["permissions"]
时,我需要跳回并重新执行print("found a child- shall we do again?")
。我考虑过列表理解,但在这种情况下我不知道如何做到这一点。大多数示例似乎都是针对已知的,设定的迭代次数。
for parseparent in allgroups:
完成后,allgroups starts out as []
master list = [dict1]
dict1 = {"dict2": True, "item1": True, "item2": False}
dict2 = {"dict3": True, "item4": True, "item5": False}
dict3 = {"Other": True, "item6": True, "item7": False}
dict4 = {"item9": False, "item8": True, "itemz": True}
应该包含allgroups
- 理想情况下,我真的希望它只包含[dict1, dict2, item1, dict3, item4, Other, item6]
项(dictx
),但是...这将是服务器我现在的目的。
简而言之......从父母列表开始,查看其中一个项目是否是另一个列表(孩子),然后查看该孩子是否有孩子;直到找不到更多的子孙。
答案 0 :(得分:1)
使用像这样的while循环:
itemsToProcess = allgroups[:]
while len(itemsToProcess) > 0:
parseparent = itemsToProcess.pop(0)
for groupPerm in self.permissions["groups"][parseparent]["permissions"]:
if self.permissions["groups"][parseparent]["permissions"][groupPerm] and (groupPerm not in allgroups):
allgroups.append(groupPerm)
itemsToProcess.append(groupPerm)
print("found a child- shall we do again?")
答案 1 :(得分:1)
看起来您的问题最好通过递归生成器来解决。对不起,我百分之百不了解你的结构,但请考虑以下几点:
def recurse_yield(d):
yield d
for k, v in d.iteritems():
if v:
recurse_yield(k)
d1 = {"hey": False}
d2 = {d1: True}
for k in recurse_yield(d2):
print k
我已经尽力将它构造成类似于你的问题,但是例如使用与实际变量相匹配的字符串会使我感到困惑。但重点是使用递归生成器优雅地遍历嵌套结构,希望有所帮助。