У меня есть словарь, который содержит поддиректории. Это дерево решений с узлами, некоторыми листовыми узлами и некоторыми неконечными узлами. Как я могу посчитать каждый из них, учитывая словарь?
Например:
{'Outlook': {'Overcast': 'Yes', 'Rain': {'Wind': {'Strong': 'No', 'Weak': 'Yes'}}, 'Sunny': {'Humidity': {'High': 'No', 'Normal': 'Yes'}}}}
Это создает дерево, как показано ниже:
В нем три неконечных узла и пять листовых. У меня есть общее представление о том, как я могу это сделать:
def count(d):
a, b = 0, 0 # non-leaf nodes and leaf nodes
for key, value in d.items():
if isinstance(value, dict):
a += 1
# some recursive call on value
else:
b+= 1
return a, b
Но я не уверен, как организовать рекурсивный вызов. Есть ли встроенный метод?