Сжатие следующего кода, предпочтительно с использованием словарного понимания
Можно ли (и, что еще более важно, практично) написать следующий код в качестве разборчивого понимания?
Я создаю здесь словарь, а затем проверяю "пустые" значения (представленные символом "-") и заменяю его другим строковым значением.
test_dict = dict(zip(list_one,list_two))
for k,v in test_dict.items():
if v == '-':
test_dict[k] = 'missing'
1 ответ
Почему бы не сделать замену при создании словаря?
test_dict = dict(zip(list_one,
('missing' if x == '-' else x for x in list_two)))
Или, если у вас есть существующий словарь, вы можете создать новый, используя:
{k: 'missing' if v == '-' else v for k, v in d.items()}
Если вы хотите изменить существующий словарь на месте, тогда действительно нет ничего плохого в существующем коде. Вы можете использовать понимание списка, например:
[d.__setitem__(k, 'missing') for k, v in d.items() if v == '-']
но это довольно некрасиво.