Python 如何打印递归决策树?
我需要打印一个递归树,如下所示。我希望这段代码是通用的,适用于其他树。我只是不知道如何打印递归树 PrintDt(网球)使用本词典,例如:Python 如何打印递归决策树?,python,recursion,tree,Python,Recursion,Tree,我需要打印一个递归树,如下所示。我希望这段代码是通用的,适用于其他树。我只是不知道如何打印递归树 PrintDt(网球)使用本词典,例如: Tennis = ['skurple type', {'gloomp': 'Yes', 'murket': ['which murket', {'grabe': ['grabetime', {'sproon': 'No', 'midnort': 'Yes'}], 'carfer': 'Yes', 'glambit': 'No'}], 'snarzle': [
Tennis = ['skurple type', {'gloomp': 'Yes', 'murket': ['which murket', {'grabe': ['grabetime', {'sproon': 'No', 'midnort': 'Yes'}], 'carfer': 'Yes', 'glambit': 'No'}], 'snarzle': ['froovencity level', {'granky': 'No', 'slipely': 'Yes'}]}]
其中输出应为:
按skurple类型拆分
If skurple type == gloomp
Return: Yes
If skurple type == murket
Split on which murket
If which murket == grabe
Split on grabetime
If grabetime == sproon
Return: No
If grabetime == midnort
Return: Yes
If which murket == carfer
Return: Yes
If which murket == glambit
Return: No
If skurple type == snarzle
Split on froovencity level
If froovencity level == granky
Return: No
If froovencity level == slipely
Return: Yes
看起来这会起作用:
def PrintDt(tree, depth=0):
if type(tree) == str:
print depth*'\t', 'Return:', tree
else:
print depth*'\t', 'Split on', tree[0]
for value in tree[1].keys():
print depth*'\t', 'If', tree[0], '==', value
PrintDt(tree[1][value], depth + 1)
例如:
>>> def PrintDt(tree, depth=0):
... if type(tree) == str:
... print depth*'\t', 'Return:', tree
... else:
... print depth*'\t', 'Split on', tree[0]
... for value in tree[1].keys():
... print depth*'\t', 'If', tree[0], '==', value
... PrintDt(tree[1][value], depth + 1)
...
>>> Tennis = ['skurple type', {'gloomp': 'Yes', 'murket': ['which murket', {'grabe': ['grabetime', {'sproon': 'No', 'midnort': 'Yes'}], 'carfer': 'Yes', 'glambit': 'No'}], 'snarzle': ['froovencity level', {'granky': 'No', 'slipely': 'Yes'}]}]
>>> PrintDt(Tennis)
Split on skurple type
If skurple type == gloomp
Return: Yes
If skurple type == murket
Split on which murket
If which murket == grabe
Split on grabetime
If grabetime == sproon
Return: No
If grabetime == midnort
Return: Yes
If which murket == carfer
Return: Yes
If which murket == glambit
Return: No
If skurple type == snarzle
Split on froovencity level
If froovencity level == granky
Return: No
If froovencity level == slipely
Return: Yes