Pythonのネストされた辞書をループしてhtmlテーブルを作成する方法

rominoushana

私は現在、Pythonにネストされた辞書オブジェクトを持っています。これをループして、基本的にhtmlテーブルを作成します。何をすべきかについての基本はすでに知っていますが、各列がまたがる行数を決定するための支援が必要です。例を挙げて詳しく説明しましょう。

Input:

{  
   "system":{  
      "System Apps":{  
         "SystemEnv":[  
           'App Test',
            'App Memory',
             'App Test']

        "SystemEnv2":{  
         "System Test":[  
           'App Test']
         }},
         "System Memory":{  
            "Memeory Test":[  
               'Memory Func',
               'Apes Test']
            }
         }
      }
   }
}

出力: HTMLテーブルの出力

問題は、rowspan属性を配置し、スパンする行の数が正しいことにあります。親の子の数だとは思いますが、コーディングの仕方がわかるようです。

また、2番目の優先事項ですが、誰かがこれを行うためのより効率的な方法を見つけた場合は、私に知らせてください。

 for level1 in dictObj:
        html += "<tr>"
        html += '<td>{}</td>'.format(level1)
        for level2 in dictObj[level1]:
            if not first_run:
                html += "<tr>"
            html += '<td>{}</td>'.format(level2)
            first_run = True
            for level3 in dictObj[level1][level2]:
                if not first_run:
                    html += "<tr>"
                html += '<td>{}</td>'.format(level3)
                first_run = True
                for app in dictObj[level1][level2][level3]:
                    if not first_run:
                        html += "<tr>"
                    first_run = True
                    for test in dictObj[level1][level2][level3][app]:
                        if not first_run:
                            html += "<tr>"
                        html += '<td>{}</td>'.format(test)
                        html += '<td>{}</td>'.format(app)
                        html += '<td>{}</td>'.format('mb')
                        html += '<td>{}</td>'.format(1)
                        html += '</tr>'
                        first_run = False
アンドレイ・ケセリー

あなたが提供したデータは不完全であるように思われるので、キーが[System][System Apps][SystemEnv2][System Test][App Test]突き出ています(最も長く、他のすべてのキーは1つ短くなっています):

data = {
   "system":{
      "System Apps":{
         "SystemEnv":[
           'App Test',
            'App Memory',
             'App Test'],
        "SystemEnv2":{
         "System Test":[
           'App Test']
         }
         },
         "System Memory":{
            "Memeory Test":[
               'Memory Func',
               'Apes Test']
            }
         }
      }
#    }
# }

def num_items(d):
    if isinstance(d, list):
        for i in d:
            for ii in num_items(i):
                yield ii
    elif isinstance(d, dict):
        for k, v in d.items():
            for ii in num_items(v):
                yield ii
    else:
        yield 1

def traverse(d, cur=[]):
    if isinstance(d, list):
        for i in d:
            cur.append( (i, sum(num_items(i))) )
            for ii in traverse(i, cur):
                yield ii
    elif isinstance(d, dict):
        for k, v in d.items():
            cur.append( (k, sum(num_items(v))) )
            for ii in traverse(v, cur):
                yield ii
    else:
        yield cur
        del cur[:]

print('<table border=4>')
for row in traverse(data):
    print('<tr>')
    for td, rowspan in row:
        print('<td rowspan={}>{}</td>'.format(rowspan, td))
    print('</tr>')
print('</table>')

プリント:

<table border=4>
<tr>
<td rowspan=6>system</td>
<td rowspan=4>System Apps</td>
<td rowspan=3>SystemEnv</td>
<td rowspan=1>App Test</td>
</tr>
<tr>
<td rowspan=1>App Memory</td>
</tr>
<tr>
<td rowspan=1>App Test</td>
</tr>
<tr>
<td rowspan=1>SystemEnv2</td>
<td rowspan=1>System Test</td>
<td rowspan=1>App Test</td>
</tr>
<tr>
<td rowspan=2>System Memory</td>
<td rowspan=2>Memeory Test</td>
<td rowspan=1>Memory Func</td>
</tr>
<tr>
<td rowspan=1>Apes Test</td>
</tr>

ブラウザでは次のようになります。

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ネストされた辞書をテーブルとして表示する方法

分類Dev

Pythonでforループを使用してネストされた辞書を作成する

分類Dev

forループを使用してPythonで動的なネストされた辞書を作成する

分類Dev

ネストされた辞書の値を理解して更新するためにforループを使用するPython

分類Dev

Pythonでネストされた辞書をループする

分類Dev

ネストされたforループを使用してHTMLテーブルを作成する

分類Dev

Python:ネストされた辞書の値をループして結合する

分類Dev

ネストされたループを使用してテーブルを作成する方法

分類Dev

Javascript-ネストされたforループを使用してテーブルを作成する方法は?

分類Dev

ネストされたforループを使用した内包表記を使用して辞書を作成します

分類Dev

Jinja2テンプレートのAnsible変数配列をループして、ネストされた辞書を作成します

分類Dev

Python:ネストされた辞書を可変行の複雑なテーブルとして出力するにはどうすればよいですか?

分類Dev

Pythonで、forループを使用して、辞書からネストされたリストを作成するにはどうすればよいですか?

分類Dev

Pythonはネストされた辞書のネストされたループを減らします

分類Dev

Python3: `h`タグのレベルに基づいてプレーンHTMLをネストされた辞書に変換する方法は?

分類Dev

Forループからネストされた辞書を作成する

分類Dev

ネストされた辞書を作成してテキストファイルとフォルダーをループし、複数のキー辞書を作成します

分類Dev

Pythonでforループを使用してネストされた辞書を作成するにはどうすればよいですか?

分類Dev

新しいネストされた辞書の値で辞書をグループ化する

分類Dev

新しいネストされた辞書の値で辞書をグループ化する

分類Dev

辞書のネストされた値を上位レベルのキーとして変更する方法

分類Dev

ネストされた辞書をループする

分類Dev

ネストされた辞書をループする

分類Dev

Python-辞書/ネストされた辞書のタプルを注文する

分類Dev

ネストされたifステートメントを使用してforループを記述するPythonの方法

分類Dev

ネストされた辞書(ループなし)の文字列を、Pythonで対応するツリーの一連のブランチとして作成するにはどうすればよいですか?

分類Dev

mysql で 3 つのテーブルを使用してネストされたクエリを作成する方法

分類Dev

ネストされた辞書のリストをループする

分類Dev

Javascriptを使用してネストされたJSONをHTMLテーブルにマップする方法

Related 関連記事

  1. 1

    ネストされた辞書をテーブルとして表示する方法

  2. 2

    Pythonでforループを使用してネストされた辞書を作成する

  3. 3

    forループを使用してPythonで動的なネストされた辞書を作成する

  4. 4

    ネストされた辞書の値を理解して更新するためにforループを使用するPython

  5. 5

    Pythonでネストされた辞書をループする

  6. 6

    ネストされたforループを使用してHTMLテーブルを作成する

  7. 7

    Python:ネストされた辞書の値をループして結合する

  8. 8

    ネストされたループを使用してテーブルを作成する方法

  9. 9

    Javascript-ネストされたforループを使用してテーブルを作成する方法は?

  10. 10

    ネストされたforループを使用した内包表記を使用して辞書を作成します

  11. 11

    Jinja2テンプレートのAnsible変数配列をループして、ネストされた辞書を作成します

  12. 12

    Python:ネストされた辞書を可変行の複雑なテーブルとして出力するにはどうすればよいですか?

  13. 13

    Pythonで、forループを使用して、辞書からネストされたリストを作成するにはどうすればよいですか?

  14. 14

    Pythonはネストされた辞書のネストされたループを減らします

  15. 15

    Python3: `h`タグのレベルに基づいてプレーンHTMLをネストされた辞書に変換する方法は?

  16. 16

    Forループからネストされた辞書を作成する

  17. 17

    ネストされた辞書を作成してテキストファイルとフォルダーをループし、複数のキー辞書を作成します

  18. 18

    Pythonでforループを使用してネストされた辞書を作成するにはどうすればよいですか?

  19. 19

    新しいネストされた辞書の値で辞書をグループ化する

  20. 20

    新しいネストされた辞書の値で辞書をグループ化する

  21. 21

    辞書のネストされた値を上位レベルのキーとして変更する方法

  22. 22

    ネストされた辞書をループする

  23. 23

    ネストされた辞書をループする

  24. 24

    Python-辞書/ネストされた辞書のタプルを注文する

  25. 25

    ネストされたifステートメントを使用してforループを記述するPythonの方法

  26. 26

    ネストされた辞書(ループなし)の文字列を、Pythonで対応するツリーの一連のブランチとして作成するにはどうすればよいですか?

  27. 27

    mysql で 3 つのテーブルを使用してネストされたクエリを作成する方法

  28. 28

    ネストされた辞書のリストをループする

  29. 29

    Javascriptを使用してネストされたJSONをHTMLテーブルにマップする方法

ホットタグ

アーカイブ