как получить все ключи и значения во вложенном dict of dicts и dicts?

<code>{'action_name':'mobile signup',
    'functions':[{'name':'test_signUp',
                  'parameters':{'username':'[email protected]',
                                'password':'12345',
                                'mobileLater':'123454231',
                                'mobile':'1e2w1e2w',
                                'card':'1232313',
                                'cardLater':'1234321234321'}}],
    'validations':[
            {'MOB_header':'My stores'},
            {'url':"/stores/my"}]}
</code>

Я хочу получить все ключи & amp; значения этого dict в виде списка (из значений, которые они являются dict или массивом)

Результат печати должен быть таким:

<code>action name = mobile signup
name = test_signUp
username : [email protected]
password : 12345
mobileLater: 123454231
mobile : 1e2w1e2w
card : 1232313 
cardLater : 1234321234321
MOB_header : My stores
</code>
 eligro13 мая 2012 г., 08:55
Спасибо я исправил
 Hindol13 мая 2012 г., 08:05
Может бытьthis поможет?
 huon13 мая 2012 г., 08:43
Для полной общности, вы должны использоватьelse: вместоelif isinstance(value, str):.
 Vikas13 мая 2012 г., 08:06
А что ты пробовал? Покажите нам код.
 Jeff Tratner13 мая 2012 г., 19:30
Здесь есть одна проблема: если у вас есть вложенные записи с одним и тем же ключом, они будут перезаписывать друг друга. надеюсь, это здесь проблема, но вы должны знать.

Ответы на вопрос(1)

Решение Вопроса

Возможно, вы захотите использовать рекурсивную функцию для извлечения всехkey, value пар.

def extract(dict_in, dict_out):
    for key, value in dict_in.iteritems():
        if isinstance(value, dict): # If value itself is dictionary
            extract(value, dict_out)
        elif isinstance(value, unicode):
            # Write to dict_out
            dict_out[key] = value
    return dict_out

Что-то в этом роде. Я пришел из C ++, поэтому мне пришлось искать все синтаксисы в Google.

 21 мая 2016 г., 22:29
Может быть, лучше заменить линиюelif isinstance(value, unicode): сelse:.
 09 авг. 2016 г., 15:36
Действительно ли со списками не работает (даже в примере автора), не так ли? Приходится просматривать списки тоже.
 29 мая 2016 г., 08:45
@sparkandshine ИМХО явное лучше, чем неявное.isinstance часть также работает как документация.

Ваш ответ на вопрос