Копирование и форматирование детского диктата - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь использовать словарь словарей для облегчения некоторых отчетов.Словари содержат некоторый шаблон с переменными формата;Я хотел бы заполнить их.

Это самостоятельный минималистский пример того, чего я пытаюсь достичь:

ISSUES = {
    'BIG_ISSUE': {
        'code': 1,
        'title': 'Something interesting',
        'detail': 'This is the affected domain {domain}'
    },
    'OTHER_ISSUE': {
        'code': 2,
        'title': 'Some other issue',
        'detail': 'Blah.'
    }
}

domain = 'foo.bar'
issue = ISSUES['BIG_ISSUE']
issue['detail'].format(domain=domain)

print(issue)

Это результат вышеприведенного:

{'code': 1, 'title': 'Something interesting', 'detail': 'This is the affected domain {domain}'}

Обратите внимание, что выше, {domain} не был отформатирован в выводе.

Это ожидаемый результат, который я ищу:

{'code': 1, 'title': 'Something interesting', 'detail': 'This is the affected domain foo.bar'}

Я считаю,это связано с неизменяемостью строк?Я попытался следовать некоторым примерам на SO и попытался использовать dict() и import copy; copy.deepcopy(), но это дало мне те же результаты.

1 Ответ

0 голосов
/ 02 декабря 2018

Это потому, что issue['detail'].format(domain=domain) возвращает новую строку.Вы получаете эту строку, а затем ничего не делаете с ней.Если вы хотите изменить значение ключа, вы должны использовать

issue['detail'] = issue['detail'].format(domain=domain)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...