Если бы значение не Ни один, я хотел бы изменить его на "" (пустую строку).
Я начинаюсь как это, но я забываю:
for k, v in mydict.items():
if v is None:
... right?
for k, v in mydict.iteritems():
if v is None:
mydict[k] = ''
В более общем случае, например, если вы добавляете или удаляете ключи, может быть небезопасно изменять структуру контейнера, в котором вы зацикливаетесь - поэтому использование элементов
для цикла на их независимой копии списка может быть разумным - но присвоение другого значения данному существующему индексу не вызывает каких-либо проблем, поэтому в Python 2.any лучше использовать iteritems
.
Однако в Python3 код выдает ошибку AttributeError: объект 'dict' не имеет атрибута 'iteritems'
ошибка. Используйте здесь items ()
вместо iteritems ()
.
См. этот пост.
Вы можете создать понимание dict только для элементов, значения которых равны None, а затем обновить его до исходного состояния:
tmp = dict((k,"") for k,v in mydict.iteritems() if v is None)
mydict.update(tmp)
Обновление - выполнено некоторые тесты производительности
Что ж, после тестирования диктовок от 100 до 10 000 элементов с различным процентным соотношением значений None, производительность решения Alex по всем направлениям примерно в два раза выше, чем у этого решения.
Понимание обычно выполняется быстрее, и это дает то преимущество, что не редактирует mydict
во время итерации:
mydict = dict((k, v if v else '') for k, v in mydict.items())