从python字典到html-lis

2024-10-01 22:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所有人 我的问题和这个很相似:python: serialize a dictionary into a simple html output

我想转换我的python字典,它包含一个树,在一个HTML列表中使用

<ul><li></li></ul> Tag

我想为每个元素添加一个复选框,id=nameoftheelements+nameothedad

这是我的python字典的一个示例:

^{pr2}$

我想得到:

<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=Chordata-convolvulacee>convolvulacee 
</li></ul></ul></ul>

有一种简单的方法,在python中实现这一点?谢谢你


Tags: idinputdictionary字典typelisimpleul
2条回答

answer that you referenced稍加调整,就会得到您想要的结果:

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)

调整的方法是将父键传递给printItems(),这样它就可以包含在<input type="checkbox"...>标记的id属性中。另一个变化是删除了叶节点处理,因为叶由空字典表示。在

输入:

^{pr2}$

printItems(taxonomy, 'root', 0)的输出是:

<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>

这就是结果。在

def func(dict1):
    for name, dictionary in dict1.items():
        print '<ul><li>'
        print '<input type=checkbox id={0}-root>'.format(name)
        print name
        func(dictionary)
        print '</ul></li>'

dict1 = {
  'Animalia': {
    'Chordata': {
      'Mammalia': {
        'Carnivora': {
          'Canidae': {
            'Canis': {
              'coyote': {

              },
              'dog': {

              }
            }
          },
          'Felidae': {
            'Felis': {
              'cat': {

              }
            },
            'Panthera': {
              'lion': {

              }
            }
          }
        }
      }
    }
  },
  'Plantae': {
    'Solanales': {
      'Convolvulaceae': {
        'Ipomoea': {
          'sweet potato': {

          }
        }
      },
      'Solanaceae': {
        'Solanum': {
          'potato': {

          },
          'tomato': {

          }
        }
      }
    }
  }
}

func(dict1)

相关问题 更多 >

    热门问题