有没有一种方法可以过滤Python中嵌套的dict,这样我就只能看到我指定的键了吗? 示例:
x = {
"field": [
{
"nm_field": "ch_origem_sistema_chave",
"inf_tabelado": {
"dropdown_value": "",
"dropdown_key": "",
"url_lista": "",
"chave_relacional": ""
},
},
{
"nm_field": "ax_andamento_data",
"inf_tabelado": {
"dropdown_value": "",
"dropdown_key": "",
"url_lista": "",
"chave_relacional": ""
},
}
],
"_metadata": {
"dt_reg": "22/01/2014 16:17:16",
"dt_last_up": "10/04/2014 16:30:44",
},
"url_detalhes": "/DetalhesDocsPro.aspx",
"url_app": "/docspro",
}
y = filter(x, ['dropdown_value', 'nm_field', 'url_app', 'dt_reg'])
那么变量y应该是:
^{pr2}$我尝试过使用defaultdict做一些事情,但是在任何级别的递归中都没有成功。我还发现在处理不同的数据结构时很困难。在
这里有一个解决方案,它以深度优先的方式遍历结构,以找到要检查的“叶”节点是否在要保留的元素列表中。当它找到这样一个元素时,它用
del
从字典中删除它。(所以这是在适当的地方完成的。)请注意,我没有定义一个名为
^{pr2}$filter
的函数,因为它是一个内置函数,您不想隐藏它。在以下是2rs2ts的答案的修改版本,它返回一个新对象而不是修改旧对象(并处理非叶节点上的过滤):
带着这个,你会打电话来的
^{pr2}$然后得到
请注意,如果所有内容都被过滤,则返回
None
。例如将始终返回
None
,无论x
中是什么。在相关问题 更多 >
编程相关推荐