dict过滤 python_Python:如何通过叶值过滤n-nested dicts的dict?

我有一个看起来像这样的字典:

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'],}

所以基本上是一个n嵌套的dict,其中每个值都是另一个dict或包含单个项的列表.

假设我想通过单个列表项过滤它,例如“Red”,结果将是:

d = {'Food': {'Fruit' : {'Apples' : {'Fuji' : ['Red'],'Grapes' : {'Red Grapes' : ['Red'],'Dessert': {'Baked Ds' : {'Cakes' : {'Red Velvet' : ['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)

我怀疑这只是一个递归问题,但任何建议都会非常感激.

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值