Заменить значение у ключа, если оно None
Есть словарь d, некоторые значения которого могут быть None. Как заменить определённое значение ключа k на v, если оно равно None?
d = {'k1': None, 'k2': 42}
k = 'k1'
v = 42
if d[k] is None:
d[k] = v
Проблема в том, что тут 2 доступа по ключу. Можно ли сделать это за 1 доступ?
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
вариант 1:
d[k] = v if d[k] is None else d[k]
вариант 2:
d = dict((key, v if key == k and value is None else value) for key, value in d.items())
вариант 2 хорош тем, что если ключ k отсутствует в словаре, то не будет ошибки, а для первого случая пришлось бы делать код:
if k in d:
d[k] = v if d[k] is None else d[k]
или вообще:
if k in d and d[k] is None:
d[k] = v