私は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 がいくつかあります。したがって、最終的な出力はフォレストになるはずです。一本根の木ではありません。