如何在Python中打印另一个字典中的键和深层嵌套dict中的值
下面是我的字典。如何在Python中打印另一个字典中的键和深层嵌套dict中的值如何在Python中打印另一个字典中的键和深层嵌套dict中的值,python,dictionary,Python,Dictionary,下面是我的字典。如何在Python中打印另一个字典中的键和深层嵌套dict中的值 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": 1300
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']
filtered_map_dict = {'peers':'pe', 'remote_id':'id', 'remote_as':'as', 'uptime':'up'}
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)
我的输出:
peers: 15.1.1.1
remote_id: 15.1.1.1
remote_as: 65002
uptime: 13002
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
up: 13002
def seek_keys(d, key_list, filter_list):
for k, v in d.items():
if k in key_list:
if isinstance(v, dict):
print(filter_list[k] + ": " + list(v.keys())[0])
else:
print(filter_list[k] + ": " + str(v))
if isinstance(v, dict):
seek_keys(v, key_list, filter_list)
seek_keys(my_nested_dict, filtered_list, filtered_map_dict)
>>> python3 test.py
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
as: 13002 # It should be "as" based on your filtered_map_dict. (Not "up" as you have written in your question.)
预期输出:
peers: 15.1.1.1
remote_id: 15.1.1.1
remote_as: 65002
uptime: 13002
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
up: 13002
def seek_keys(d, key_list, filter_list):
for k, v in d.items():
if k in key_list:
if isinstance(v, dict):
print(filter_list[k] + ": " + list(v.keys())[0])
else:
print(filter_list[k] + ": " + str(v))
if isinstance(v, dict):
seek_keys(v, key_list, filter_list)
seek_keys(my_nested_dict, filtered_list, filtered_map_dict)
>>> python3 test.py
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
as: 13002 # It should be "as" based on your filtered_map_dict. (Not "up" as you have written in your question.)
您需要打印
filter\u list[k]
而不是简单的k
。我已经编写了一个示例代码,它提供了预期的输出
代码:
peers: 15.1.1.1
remote_id: 15.1.1.1
remote_as: 65002
uptime: 13002
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
up: 13002
def seek_keys(d, key_list, filter_list):
for k, v in d.items():
if k in key_list:
if isinstance(v, dict):
print(filter_list[k] + ": " + list(v.keys())[0])
else:
print(filter_list[k] + ": " + str(v))
if isinstance(v, dict):
seek_keys(v, key_list, filter_list)
seek_keys(my_nested_dict, filtered_list, filtered_map_dict)
>>> python3 test.py
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
as: 13002 # It should be "as" based on your filtered_map_dict. (Not "up" as you have written in your question.)
输出:
peers: 15.1.1.1
remote_id: 15.1.1.1
remote_as: 65002
uptime: 13002
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
up: 13002
def seek_keys(d, key_list, filter_list):
for k, v in d.items():
if k in key_list:
if isinstance(v, dict):
print(filter_list[k] + ": " + list(v.keys())[0])
else:
print(filter_list[k] + ": " + str(v))
if isinstance(v, dict):
seek_keys(v, key_list, filter_list)
seek_keys(my_nested_dict, filtered_list, filtered_map_dict)
>>> python3 test.py
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
as: 13002 # It should be "as" based on your filtered_map_dict. (Not "up" as you have written in your question.)
如果您将您的过滤地图\u dict
更改为:
filtered_map_dict = {"peers": "pe", "remote_id": "id", "remote_as": "as", "uptime": "up"}
正如您在下面看到的,输出将完全符合您的要求
>>> python3 test.py
pe: 15.1.1.1
id: 15.1.1.1
as: 65002
up: 13002
只需打印
filtered\u map\u dict[k]
而不是k
。