python - 从 python 3.X 中的深度嵌套字典中打印特定的键和值
问题描述
我是 python 新手,我尝试过搜索,但似乎可以找到我想要完成的示例。任何想法都非常感谢。我正在使用包含大量键和值的嵌套字典,但我只想使用过滤后的列表变量打印特定的字典。
my_nested_dict = {"global": {"peers": {"15.1.1.1": {"remote_id": "15.1.1.1", "address_family": {"ipv4": {"sent_prefixes": 1, "received_prefixes": 4, "accepted_prefixes": 4}}, "remote_as": 65002, "uptime": 13002, "is_enabled": true, "is_up": true, "description": "== R3 BGP Neighbor ==", "local_as": 65002}}, "router_id": "15.1.1.2"}}
我想过滤它并选择要打印的键和值
filtered_list = ['peers', 'remote_id', 'remote_as', 'uptime']
并实现出局
peers: 15.1.1.1
remote_id: 15.1.1.1
remote_as: 65002
uptime: 13002
解决方案
使用递归和isinstance
:
my_nested_dict = {"global": {"peers": {"15.1.1.1": {"remote_id": "15.1.1.1", "address_family": {"ipv4": {"sent_prefixes": 1, "received_prefixes": 4, "accepted_prefixes": 4}}, "remote_as": 65002, "uptime": 13002, "is_enabled": True, "is_up": True, "description": "== R3 BGP Neighbor ==", "local_as": 65002}}, "router_id": "15.1.1.2"}}
filtered_list = ['peers', 'remote_id', 'remote_as', 'uptime']
def seek_keys(d, key_list):
for k, v in d.items():
if k in key_list:
if isinstance(v, dict):
print(k + ": " + list(v.keys())[0])
else:
print(k + ": " + str(v))
if isinstance(v, dict):
seek_keys(v, key_list)
seek_keys(my_nested_dict, filtered_list)
注意:这里有一个内置假设,如果您想要从另一个字典的键中获取“值”,您将获得第一个键。
推荐阅读
- javascript - 我可以将 Django 对象值解释为 HTML 中 JS 脚本中的 JSON 数据吗?
- bash - Goaccess 处理多个日志
- python - Python - 在gcode修饰符的if语句中出现多个“或”条件
- android - Android Room 教程不建
- arrays - 如何在 Reactjs 中使用 clickHandler 和 useState 更新对象数组
- json - 如何在 Swift 中处理 json null 值?
- css - 如何使用 purescript-css 将 CSS 边距属性设置为自动?
- node.js - 如何修复“验证错误:用户验证失败:名称:需要路径‘名称’。” 蒙古错误?
- javascript - 如何通过我在 https 上托管的 reactjs-app 向我在 http 上托管的 rest-api 提出上诉来解决错误
- java - 如何以最小顺序从反馈列表中找到每个用户给出的最新反馈?