<h3><strong><em>更新:</em></strong></h3>
<p>对于使用任意嵌套打印这些规则的递归函数,可以使用以下方法:</p>
<p><strong>更新了Dict和函数</p>
<pre><code>rules = {4: {'s': 'No', 'a': 'e', 'p': 'No', 'c': 'No', 'l': 'e', 'f': 'No', 'm': 'No', 'n': {19: {'o': 'e', 'r': 'No', 'b': 'e', 'h': 'e', 'w': {21: {'p': 'e', 'w': 'e', 'd': {1: {'s': 'e', 'f': 'No', 'y': 'No'}}, 'g': 'e', 'l': {2: {'c': 'e', 'w': 'No', 'n': 'e', 'y': 'No'}}}}, 'k': 'e', 'n': 'e', 'y': 'e'}}, 'y': 'No'}}
string_rules = [] # to keep them in a list
def print_nested_count(myDict, parent=None, out=[], count=0):
for key, value in myDict.items():
if isinstance(value, dict):
count += 1 # signifies recursion level
if parent and count % 2 == 0:
out.append("<{} = {}> AND ".format(parent, key))
count = print_nested_count(value, key, out, count=count)
else:
if count:
string_rules.append("".join(out).lstrip() + "<{} = {}> > {}".format(parent, key, value))
if count % 2 == 0 and out:
out.pop()
count -= 1
return count
</code></pre>
<p><strong>更新输出</strong>:</p>
<p>通过调用此函数并打印<code>string_rules</code>中的每一行:</p>
<pre><code>if __name__ == "__main__":
print_nested_count(rules)
for line in string_rules: print(line)
</code></pre>
<p>输入格式:</p>
<pre><code>{4: {'a': 'e',
'c': 'No',
'f': 'No',
'l': 'e',
'm': 'No',
'n': {19: {'b': 'e',
'h': 'e',
'k': 'e',
'n': 'e',
'o': 'e',
'r': 'No',
'w': {21: {'d': {1: {'f': 'No', 's': 'e', 'y': 'No'}},
'g': 'e',
'l': {2: {'c': 'e', 'n': 'e', 'w': 'No', 'y': 'No'}},
'p': 'e',
'w': 'e'}},
'y': 'e'}},
'p': 'No',
's': 'No',
'y': 'No'}}
</code></pre>
<p>输出格式:</p>
<pre><code><4 = s> > No
<4 = a> > e
<4 = l> > e
<4 = y> > No
<4 = p> > No
<4 = n> AND <19 = y> > e
<4 = n> AND <19 = w> AND <21 = p> > e
<4 = n> AND <19 = w> AND <21 = w> > e
<4 = n> AND <19 = w> AND <21 = d> AND <1 = s> > e
<4 = n> AND <19 = w> AND <21 = d> AND <1 = f> > No
<4 = n> AND <19 = w> AND <21 = d> AND <1 = y> > No
<4 = n> AND <19 = w> AND <21 = l> AND <2 = y> > No
<4 = n> AND <19 = w> AND <21 = l> AND <2 = w> > No
<4 = n> AND <19 = w> AND <21 = l> AND <2 = c> > e
<4 = n> AND <19 = w> AND <21 = l> AND <2 = n> > e
<4 = n> AND <19 = w> AND <21 = g> > e
<4 = n> AND <19 = h> > e
<4 = n> AND <19 = k> > e
<4 = n> AND <19 = r> > No
<4 = n> AND <19 = n> > e
<4 = n> AND <19 = o> > e
<4 = n> AND <19 = b> > e
<4 = f> > No
<4 = c> > No
<4 = m> > No
</code></pre>