我有一个字典,看起来是这样的:
d = {'Food': {'Fruit' : {'Apples' : {'Golden Del.' : ['Yellow'],
'Granny Smith' : ['Green'],
'Fuji' : ['Red'],
},
'Cherries' : ['Red'],
'Bananas' : ['Yellow'],
'Grapes' : {'Red Grapes' : ['Red'],
'Green Grapes' : ['Green'],
},
},
'Dessert': {'Baked Ds' : {'Cakes' : {'Yellow Cake' : ['Yellow'],
'Red Velvet' : ['Red'],
},
'Cookies' : ['Yellow'],
},
},
'Steak' : ['Red'],
},
'Other': ['Blue'],
}
因此,基本上,正嵌套字典,其中每个值可以是另一字典或一个包含单个条目的列表。
比方说,我想通过一个单独的列表项过滤此,说,“红”这样的结果将是:
d = {'Food': {'Fruit' : {'Apples' : {'Fuji' : ['Red'],
},
'Cherries' : ['Red'],
'Grapes' : {'Red Grapes' : ['Red'],
},
},
'Dessert': {'Baked Ds' : {'Cakes' : {'Red Velvet' : ['Red'],
},
},
},
'Steak' : ['Red'],
},
}
这样的结构保持不变,但不具有“红色”作为其列表项都被删除,一路上扬的层次结构。
有什么建议么? 我搞砸周围的这一段时间,并用此来了,但它似乎不工作:
def filterNestedDict(node, searchItem):
if isinstance(node,list):
return node
else:
for key, value in node.iteritems():
if isinstance(value,dict) and value is not {}:
return {key: filterNestedDict(value,searchItem)}
elif searchItem in value:
return {key: filterNestedDict(value,searchItem)}
return filterNestedDict(bigTree, searchItem)
我怀疑这只是递归的问题,但任何建议,将不胜感激。
谢谢!