【发布时间】:2016-10-08 23:58:48
【问题描述】:
我想计算 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
这并没有真正起作用,因为计算了一些非叶节点,并且它不会一直递归到某些结构中。
【问题讨论】:
-
对不起... 如何这是题外话?
标签: python json recursion count yield