5

私はpythonが初めてです。上の木のような絵を出力するプログラムを書きたいですstdout。私の理想的な出力は次のようなものです:

0
|__0
|__4
|  |__360
|      |__1000
272
|__3460

私が収集したデータは次のとおりです。

0       : [0, 4]
4       : [360]
272     : [3460]
368     : [4184]
472     : [504, 576, 7016]
568     : [584, 640]
576     : [664, 672]
640     : [1048]
664     : [368, 372, 512, 788]
788     : [2120, 2720, 2976, 2996, 3956, 3980]

左の列は親プロセス ID、右の列は子プロセス ID です。という辞書にデータを入れましたdic。したがって、ディクショナリkeyは親プロセス ID であり、ディクショナリvalueは子プロセス ID で構成されるリストです。

私のコードは次のようなものです:

for key in dic.keys():
    print key, '\n|'
    for v in dic[key]:
        print '__', v, '\n|'

問題は、2 つのレイヤー ツリーしか出力できないことです。576親 ID は の子 ID でもあるため、データを例にとります472。したがって576、664、672 は 472 のサブツリーに配置する必要があります。私のコードはこれでは機能しません。再帰関数を使用する必要があるようです。しかし、私はそれを処理する方法がわかりません。

ヒントを教えていただけますか?


編集:私が収集したデータから、祖父母を持たない親 ID がいくつかあります。したがって、最終的な出力はフォレストになるはずです。一本根の木ではありません。

4

1 に答える 1