Top.Mail.Ru
Ответы

Python. Глубокое копирование, рекурсия, создание нового словаря с заменёнными значениями

Напишите программу, которая запрашивает у клиента, сколько будет сайтов, а затем запрашивает название продукта и после каждого запроса выводит на экран активные сайты.

Условия: структуру сайта нужно описать один раз.

123456789101112
 site = { 
    'html': { 
        'head': { 
            'title': 'Куплю/продам телефон недорого' 
        }, 
        'body': { 
            'h2': 'У нас самая низкая цена на iPhone', 
            'div': 'Купить', 
            'p': 'Продать' 
            } 
    } 
} 

Но я написал пока-что это:

1234567891011121314151617181920212223242526272829303132333435
 from copy import deepcopy 
from json import dumps 
site = { 
    'html': { 
        'head': { 
            'title': 'Куплю/продам телефон недорого' 
        }, 
        'body': { 
            'h2': 'У нас самая низкая цена на iPhone', 
            'div': 'Купить', 
            'p': 'Продать' 
            } 
    } 
} 
 
def change_value(struct, **kwargs): 
    dictt = deepcopy(struct) 
 
    for key, value in kwargs.items(): 
        #struct['html']['head']['title'] = struct['html']['head']['title'].replace('телефон', value) 
        #struct['html']['body']['h2'] = struct['html']['body']['h2'].replace('iPhone', value) 
        #return dumps(struct, indent=4, ensure_ascii=False) 
        if key in dictt: 
            dictt[key] = dictt[key].replace('iPhone', value) 
            print(dictt) 
            print(dictt[key]) 
    for sub_struct in dictt.values(): 
        if isinstance(sub_struct, dict): 
            return change_value(sub_struct, **kwargs) 
    return dictt 
for _ in range(int(input('Сколько сайтов: '))): 
    name = input('Введите название продукта для нового сайта: ') 
    print(f'Сайт для {name}:') 
    print(change_value(site, title=name, h2=name)) 
    #'site = ' + 

Вывод должен быть таким:

По дате
По рейтингу
Аватар пользователя
Мастер

В продолжение предыдущего вопроса..
https://otvet.mail.ru/question/230848548
Проблема то в чем? Не понятно как именованные параметры использовать? Это просто словарь, соответственно, и методы такие же..
Какая задача вообще была? Есть текст внятный?
Слово "телефон" меняем на другое в зависимости от тега?