Я хотел бы подсчитать количество листов (т. Е. Только те ключи, у которых нет дополнительных дочерних элементов) в структуре JSON.Подсчет узлов узла JSON
Я не могу найти ничего очевидного для этого, поэтому пытаюсь написать функцию, но изо всех сил пытаюсь найти ту, которая работает, без использования глобальной переменной.
Это то, что я до сих пор:
def count_leafs(nested):
is isinstance(nested, Mapping):
for k, v in nested.items():
if isinstance(v, Mapping):
for i_k, i_v in count_leafs(v):
yield i_k, i_v
elif isinstance(v, MutableSequence):
for i_k in v:
for i_i_k, i_i_v in i_k.items():
count_leafs(i_i_v)
else:
yield k, v
elif isinstance(nested, MutableSequence):
for k in nested:
count_leafs(k)
for k,v in count_leafs(json):
leaf_count += 1
Который действительно не работает, как некоторых не листовыми узлами подсчитываются, и это не рекурсивный весь путь вниз, в некоторых структурах.
Заменяет basestring на str, как на Python3, приветствует Хай. – Richard
Прохладный. Я узнал что-то новое. –