Вопрос по dictionary, python, list – как получить все ключи и значения во вложенном dict of dicts и dicts?

10
<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>
Для полной общности, вы должны использоватьelse: вместоelif isinstance(value, str):. huon
Может бытьthis поможет? Hindol
Спасибо я исправил eligro
А что ты пробовал? Покажите нам код. Vikas
Здесь есть одна проблема: если у вас есть вложенные записи с одним и тем же ключом, они будут перезаписывать друг друга. надеюсь, это здесь проблема, но вы должны знать. Jeff Tratner

Ваш Ответ

1   ответ
8

Возможно, вы захотите использовать рекурсивную функцию для извлечения всех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.

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

Похожие вопросы