我有一组结构化字符串。有没有一种干净的方法用树形图可视化这些数据?我目前正在阅读http://www.graphviz.org/和https://pypi.python.org/pypi/pydot,但似乎我必须进行大量重构才能使我的字符串符合其格式。
String Occurrence
A:B:C:D 355
A:B:C:D:F 330
A:B:C:E:H 78
A:B:C:D:G 37
A:B:C:E:I 33
... ...
答案 0 :(得分:1)
不是“简单”方法,但此脚本会将您的文件解析为树,每个“大小”值都存储在None索引中:
<强> tree.txt 强>
A:B:C:D 355
A:B:C:D:F 330
A:B:C:E:H 78
A:B:C:D:G 37
A:B:C:E:I 33
<强> tree.py 强>
import re
f = open('tree.txt', 'r')
tree = {}
for line in f:
parts = re.split('\s+', line)
if parts[0] and parts[1]:
pointer = tree
node = parts[0].split(':')
for key in node:
if not key in pointer:
pointer[key] = {None: None}
pointer = pointer[key]
try:
pointer[None] = int(parts[1])
except:
pass
print(tree)
tree
将如下所示:
{
'A': {
'B': {
'C': {
'D': {
'F': {None: 330},
'G': {None: 37},
None: 355
},
'E': {
'H': {None: 78},
'I': {None: 33},
None: None
},
None: None
},
None: None
},
None: None
}
}
答案 1 :(得分:0)
通过转换&#34;:&#34;进入&#34; - &gt;&#34;用.DOT格式化包装,绘图很容易。
digraph graphname {
A -> B -> C -> D;
A -> B -> C -> D -> F;
A -> B -> C -> E -> H;
A -> B -> C -> D -> G;
A -> B -> C -> E -> I;
}
我在这里测试了我的一小段代码:http://sandbox.kidstrythisathome.com/erdos/