<p>对<a href="https://stackoverflow.com/a/3930913/21945">answer that you referenced</a>稍加调整,就会得到您想要的结果:</p>
<pre><code>def printItems(dictObj, parent, indent):
if len(dictObj):
print '{}<ul>'.format(' ' * indent)
for k,v in dictObj.iteritems():
print '{}<li><input type="checkbox" id="{}-{}">{}</li>'.format(
' ' * (indent+1), k, parent, k)
printItems(v, k, indent+1)
print '{}</ul>'.format(' ' * indent)
</code></pre>
<p>调整的方法是将父键传递给<code>printItems()</code>,这样它就可以包含在<code><input type="checkbox"...></code>标记的<code>id</code>属性中。另一个变化是删除了叶节点处理,因为叶由空字典表示。在</p>
<p>输入:</p>
^{pr2}$
<p><code>printItems(taxonomy, 'root', 0)</code>的输出是:</p>
<pre><code><ul>
<li><input type="checkbox" id="Animalia-root">Animalia</li>
<ul>
<li><input type="checkbox" id="Chordata-Animalia">Chordata</li>
<ul>
<li><input type="checkbox" id="Mammalia-Chordata">Mammalia</li>
<ul>
<li><input type="checkbox" id="Carnivora-Mammalia">Carnivora</li>
<ul>
<li><input type="checkbox" id="Canidae-Carnivora">Canidae</li>
<ul>
<li><input type="checkbox" id="Canis-Canidae">Canis</li>
<ul>
<li><input type="checkbox" id="coyote-Canis">coyote</li>
<li><input type="checkbox" id="dog-Canis">dog</li>
</ul>
</ul>
<li><input type="checkbox" id="Felidae-Carnivora">Felidae</li>
<ul>
<li><input type="checkbox" id="Felis-Felidae">Felis</li>
<ul>
<li><input type="checkbox" id="cat-Felis">cat</li>
</ul>
<li><input type="checkbox" id="Panthera-Felidae">Panthera</li>
<ul>
<li><input type="checkbox" id="lion-Panthera">lion</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<li><input type="checkbox" id="Plantae-root">Plantae</li>
<ul>
<li><input type="checkbox" id="Solanales-Plantae">Solanales</li>
<ul>
<li><input type="checkbox" id="Convolvulaceae-Solanales">Convolvulaceae</li>
<ul>
<li><input type="checkbox" id="Ipomoea-Convolvulaceae">Ipomoea</li>
<ul>
<li><input type="checkbox" id="sweet potato-Ipomoea">sweet potato</li>
</ul>
</ul>
<li><input type="checkbox" id="Solanaceae-Solanales">Solanaceae</li>
<ul>
<li><input type="checkbox" id="Solanum-Solanaceae">Solanum</li>
<ul>
<li><input type="checkbox" id="tomato-Solanum">tomato</li>
<li><input type="checkbox" id="potato-Solanum">potato</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</code></pre>