2016-12-25 8 views
0

У меня есть вложенный словарь в python - {a: {d: {v: 2, c: 3}}} и я хочу написать функцию, которая получает ключ - как 'а' и вернуть словарь: {d: {v: 2, с: 3}} только внутриУдалить внешний ключ вложенного словаря в Python

Я пытаюсь использовать:

def findkeys(node, kv): 
    if isinstance(node, list): 
     for i in node: 
      for x in findkeys(i, kv): 
       yield x 
    elif isinstance(node, dict): 
     if kv in node: 
      yield node[kv] 
     for j in node.values(): 
      for x in findkeys(j, kv): 
       yield x 

Но вернуть его как список, а не словарь, поэтому он имеет только один элемент в списке [{d:{v:2, c:3}}], поэтому я не могу получить доступ после него к ключу 'c', например

Мой словарь preasent дерево, и я хочу пройти через него, пока не доберусь до листа.

У кого-то есть идея?

+4

Как вы описали, вы 'outerdict [ 'а'] 'даст вам внутреннее Dict – pvg

+0

Вы также можете сделать list [0] после вызова вашей функции, хотя это кажется ненужным шагом. –

ответ

1
def get_val(dct,key): 
    for k, v in dct.iteritems(): 
     if key in dct.keys(): 
      print dct[key] 
     else : 
      for d in dct.values(): 
       get_val(d, key) 

dct = {'a': {'d':{'v':2, 'c':3}}} 
key='a' 
get_val(dct,key) 

если key='a', выход = {'d':{'v':2, 'c':3}} если key='d', выход = {'c': 3, 'v': 2}

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