也许这可以指导您正确的方向。
byPath收集嵌套的字典项。调用之后,您基本上可以将结果列表弄平,并检查是否满足您的条件(例如
elem !=''或类似条件
not elem):
x = #your x as posteddef byPath (tree, path): try: head, tail = path.split ('.', 1) except: return tree [path] if head == 'XX': return [byPath (node, tail) for node in tree] else: return byPath (tree [head], tail)print (byPath (x, 'top.middle.XX.nested') )print (byPath (x, 'top.last.XX.nested.XX.first') )print (byPath (x, 'top.last.XX.nested.XX.second') )print (byPath (x, 'other') )
编辑 :这部分实际计数那些不是空字符串的元素:
def count (result): if isinstance (result, list): total = 0 positive = 0 for e in result: r = count (e) total += r [1] positive += r [0] return (positive, total) else: return (0 if result == '' else 1, 1)a = byPath (x, 'top.middle.XX.nested')b = byPath (x, 'top.last.XX.nested.XX.first')c = byPath (x, 'top.last.XX.nested.XX.second')d = byPath (x, 'other')for x in [a, b, c, d]: print (count (x) )
将所有内容放在一起:
def f (tree, path): return count (byPath (tree, path) )for path in ['top.middle.XX.nested', 'top.last.XX.nested.XX.first', 'top.last.XX.nested.XX.second', 'other']: print (path, f (x, path) )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)