Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打印递归决策树?_Python_Recursion_Tree - Fatal编程技术网

Python 如何打印递归决策树?

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': [

我需要打印一个递归树,如下所示。我希望这段代码是通用的,适用于其他树。我只是不知道如何打印递归树

PrintDt(网球)使用本词典,例如:

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