2017-02-20 51 views
-1

我是新来的蟒蛇..试图让所有的关键组合..让我说我有字典d。获取嵌套的Python字典中的所有组合键

d = {'edge': {'edge1': {'interface': {'interface1': {'ip': 10, 'name': 'uplink-to-x'}}, 'name': 'x'}, 'edge2': {'interface': {'interface1': {'ip': 20, 'name': 'uplink-to-y'}}, 'name': 'y'}}} 

需要输出为:

edge["edge1"]["name"] 
edge["edge1"]["interface"]["interface1"]["name"] 
edge["edge1"]["interface"]["interface1"]["ip"] 
edge["edge2"]["name"] 
edge["edge2"]["interface"]["interface1"]["name"] 
edge["edge2"]["interface"]["interface1"]["ip"] 

请帮助..

+2

请出示你的努力。 – Julien

回答

3

您可以通过片式元件这样的循环:

Python3代码

d = {'edge': {'edge1': {'interface': {'interface1': {'ip': 10, 'name': 'uplink-to-x'}}, 'name': 'x'}, 'edge2': {'interface': {'interface1': {'ip': 20, 'name': 'uplink-to-y'}}, 'name': 'y'}}} 
def nested_print(d): 
    for key in d: 
     if isinstance(d[key],dict): 
      nested_print(d[key]) 
     else: 
      print(key,d[key]) 
nested_print(d) 

输出

ip 20 
name uplink-to-y 
name y 
ip 10 
name uplink-to-x 
name x 

N.B:我没有发现任何元素作为edge["edge1"]["name"]在给定字典

isinstance内置函数的文档可以在这里找到:https://docs.python.org/3/library/functions.html#isinstance

+0

谢谢你@ arsho –