def get_num_leafs(decision_tree):
    """
    获取决策树叶子节点的数目
    :param decision_tree:
    :return: 决策树的叶子节点的数目
    """
    # 初始化叶子节点
    num_leafs = 0
    # python3中decision_tree.keys()返回的是dict_keys，不是list，
    # 所以不能使用decision_tree.keys()[0]的方法获取结点属性，可以使用list(decision_tree.keys())[0]

    # iter() 函数用来生成迭代器。可迭代的对象如list、dict等需要用iter()函数转化成Iterator。
    iter_dt = iter(decision_tree)
    first_key = next(iter_dt)

    # 获取下一组字典
    second_dict = decision_tree[first_key]
    for key in second_dict.keys():
        # 测试该结点是否为字典，如果不是字典，代表此结点为叶子结点
        if type(second_dict[key]).__name__ == 'dict':
            # 如果是字典，则递归调用获取，叶子节点数目
            num_leafs += get_num_leafs(second_dict[key])
        else:
            num_leafs += 1

    return num_leafs