好吧,我是python的新手,用这种语言创建简单的标签有点让我感到困惑。 我试图获得这样的标签输出:
:0.1
A:0.1
:0.9
H:2.2
I:3.0
B:0.2
:0.5
C:0.3
D:0.4
它是节点的名称,冒号,':'及其对应的距离,没有名称的节点由'None'指定,这是因为它们仅代表到另一个变量的距离。这是树设计,因此标签和缩进可以变化。 我从
收集这些信息self.name
表示名称变量,以及
self.distance
表示距离
信息的缩减输出如下所示:
A : 0.1
H : 2.2
I : 3.0
B : 0.2
None : 0.9
C : 0.3
D : 0.4
None : 0.5
None : 0.1
应该有3个级别的缩进,
根,':0.1',
其3个孩子的'A:0.1'; ':0.9'; ':0.5',
和':0.9'和':0.5的孩子,H,I,B,C和D
如果这个信息不够,我很抱歉,我只是不确定如何创建一个基本的标签输出,就像我上面显示的那样。
谢谢!
编辑:收到我的回答谢谢!答案 0 :(得分:4)
假设您有一个类似树的数据结构。为简单起见,我将在本例中使用嵌套的dict:
data = {
"A": {"value": 0.2, "children": {
"D": {"value": 0.3, "children": {}},
"E": {"value": 0.4, "children": {
"H": {"value": 0.5, "children": {}},
"I": {"value": 0.6, "children": {}}
}
}
}
},
"B": {"value": 0.7, "children": {
"C": {"value": 0.8, "children": {}},
"D": {"value": 0.9, "children": {}}
}
}
}
您可以使用以下递归函数遍历并打印它:
from operator import itemgetter
def display(tree, depth=0):
prepend = "\t" * depth
for key, val in sorted(tree.items()):
print "{0}{1}: {2}".format(prepend, key, val['value'])
if val['children']:
display(val['children'], depth + 1)
显示以下输出:
>>> display(data)
A: 0.2
D: 0.3
E: 0.4
H: 0.5
I: 0.6
B: 0.7
C: 0.8
D: 0.9
>>>