我对此感到非常震惊,
我有一本字典
tree = {
'B': {
'1': {
'E': {
'1': {
'D': {
'1': '1',
'0': '0'
}
},
'0': {
'A': {
'1': '0',
'0': '1'
}
}
}
},
'0': '1'
}
}
我正在尝试解析它并获得字典中的字母数量。在这方面的任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
这是一种可能的解决方案,使用循环+递归:
def traverse(tree):
if not isinstance(tree, dict):
return tree.isalpha() # if leafs can't be alphabetic, simply return 0
c = 0
for k, v in tree.items():
c += k.isalpha() + traverse(v)
return c
或者更短一些,使用生成器表达式+递归:
def traverse(tree):
if not isinstance(tree, dict):
return tree.isalpha() # if leafs can't be alphabetic, simply return 0
return sum(k.isalpha() + traverse(v) for k, v in tree.items())
无论哪种方式,它都有效。例如,使用问题中的输入:
tree = {'B': {'0': '1',
'1': {'E': {'0': {'A': {'0': '1', '1': '0'}},
'1': {'D': {'0': '0', '1': '1'}}}}}}
traverse(tree)
=> 4
答案 1 :(得分:0)
也许你想要这个:
>>> tree = {'B': {'1': {'E': {'1': {'D': {'1': '1', '0': '0'}}, '0': {'A': {'1': '0', '0': '1'}}}}, '0': '1'}}
>>> print len(filter(lambda ch: ch.isalpha(), str(tree)))
4