2017-02-20 4 views
-1

Я новичок в python .. пытаясь получить все комбинации клавиш. Предположим, у меня есть словарь 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 –

Смежные вопросы