Я сделал функцию Python для преобразования словарей в форматированные строки. Моей целью было заставить функцию взять словарь для ввода и превратить его в строку, которая выглядела хорошо. Например, что-то вроде {'text':'Hello', 'blah':{'hi':'hello','hello':'hi'}}
будет превращено в это:
text:
Hello
blah:
hi:
hello
hello:
hi
Это код, который я написал:
indent = 0
def format_dict(d):
global indent
res = ""
for key in d:
res += (" " * indent) + key + ":\n"
if not type(d[key]) == type({}):
res += (" " * (indent + 1)) + d[key] + "\n"
else:
indent += 1
res += format_dict(d[key])
indent -= 1
return res
#test
print format_dict({'key with text content':'some text',
'key with dict content':
{'cheese': 'text', 'item':{'Blah': 'Hello'}}})
Это работает как шарм. Он проверяет, является ли элемент словаря другим словарем, и в этом случае он обрабатывает это или что-то еще, тогда он будет использовать это в качестве значения. Проблема в том, что я не могу иметь словарь и строку вместе в элементе словаря. Например, если я хотел:
blah:
hi
hello:
hello again
не было бы способа сделать это. Есть ли способ, которым я мог бы иметь что-то вроде элемента списка в словаре. Как то так {'blah':{'hi', 'hello':'hello again'}}
? И если вы предоставите решение, не могли бы вы сказать мне, как мне нужно изменить мой код (если это потребовало изменений).
Примечание : я использую python 2.5