Вывести весь словарь с его именем и исходным форматированием
from pprint import pprint
site = {
'html': {
'head': {
'title': 'Куплю/продам телефон недорого'
},
'body': {
'h2': 'У нас самая низкая цена на iphone',
'div': 'Купить',
'p': 'продать'
}
}
}
def find_key(struct, key, meaning):
if key in struct:
struct[key] = meaning
return site
for sub_struct in struct.values():
if isinstance(sub_struct, dict):
result = find_key(sub_struct, key, meaning)
if result:
return site
number_sites = int(input('Сколько сайтов: '))
for _ in range(number_sites):
product_name = input('Введите название продукта для нового сайта: ')
key = {'title': f'Куплю/продам {product_name} недорого', 'h2': f'У нас самая низкая цена на {product_name}'}
for i in key:
find_key(site, i, key[i])
print(f'Сайт для {product_name}:')
pprint(site)
Результат выполнения кода нужно вывести в соответствии с ниже приложенным примером и данным форматированием вывода:
site = {
'html': {
'head': {
'title': 'Куплю/продам телефон недорого'
},
'body': {
'h2': 'У нас самая низкая цена на iphone',
'div': 'Купить',
'p': 'продать'
}
}
}
Json не катит, так как это статический кусок кода с которым нужно работать. Говорят как-то можно организовать с помощью рекурсии.
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
from pprint import pprint
import io
site = {
'html': {
'head': {
'title': 'Куплю/продам телефон недорого'
},
'body': {
'h2': 'У нас самая низкая цена на iphone',
'div': 'Купить',
'p': 'продать'
}
}
}
def find_key(struct, key, meaning):
if key in struct:
struct[key] = meaning
return site
for sub_struct in struct.values():
if isinstance(sub_struct, dict):
result = find_key(sub_struct, key, meaning)
if result:
return site
number_sites = int(input('Сколько сайтов: '))
for _ in range(number_sites):
product_name = input('Введите название продукта для нового сайта: ')
key = {'title': f'Куплю/продам {product_name} недорого', 'h2': f'У нас самая низкая цена на {product_name}'}
for i in key:
find_key(site, i, key[i])
print(f'Сайт для {product_name}:')
buf = io.StringIO()
pprint(site, stream=buf)
output = "site = " + buf.getvalue()
print(
output
)
output:
site = {'html': {'body': {'div': 'Купить',
'h2': 'У нас самая низкая цена на InMySite',
'p': 'продать'},
'head': {'title': 'Куплю/продам InMySite недорого'}}}
UPD:
data = json.dumps(
site,
ensure_ascii=False,
indent=4
)
print(
# следите чтобы в строковых значениях не попадались знаки двойных кавычек,
# а так же избегайте значений True, False, None
"site = " + data.replace('"', "'")
)
site = {
'html': {
'head': {
'title': 'Куплю/продам InMySite недорого'
},
'body': {
'h2': 'У нас самая низкая цена на InMySite',
'div': 'Купить',
'p': 'продать'
}
}
}