воскресенье, 24 марта 2013 г.

Обход элементов словаря python

Напишите на python функцию, которая позволяет преобразовать словарь в строки, выводимые в консоль как показано в двух примерах:

dict1 = {'a':1, 'b':{'aa':11, 'bb':22}, 'c':3}

Результат: 
[a]=1
[b][aa]=11
[b][bb]=22
[c]=3

   
dict2 = {'a':1, 'b':{'aa':11, 'bb':22, 'cc':{'aaa':111, 'bbb':222, 'ccc':333}, 'dd':44}, 'c':3}

Результат:
[a]=1
[b][aa]=11
[b][bb]=22
[b][cc][aaa]=111
[b][cc][bbb]=222
[b][cc][ccc]=333
[b][dd]=44
[c]=3

    


Решение

Создайте файл print_dict.py:

def print_dict(dict_in, parent = ''):

    for key in sorted(dict_in):
        if isinstance(dict_in[key], dict):
            print_dict(dict_in[key], parent+'[{}]'.format(key))
        else:
            print '{}[{}]={}'.format(parent, key, dict_in[key])

 
def test():

    dict1 = {'a':1, 'b':{'aa':11, 'bb':22}, 'c':3}

    dict2 = {'a':1, 'b':{'aa':11, 'bb':22, 'cc':{'aaa':111, 'bbb':222, 'ccc':333}, 'dd':44}, 'c':3}

    print_dict(dict1)
    print "\n"
    print_dict(dict2)
   
if __name__ == "__main__":
    test()


Запустите этот файл в консоли и убедитесь, что печать вложенных элементов словаря происходит корректно.

Комментариев нет:

Отправить комментарий