Если вы не можете исправить ввод, вы могли бы сделать это (становится «лучше», если вам нужно добавить больше):
for prop in ['prereqs', 'optionals']:
if self.name2info[name][prop] is None:
self.name2info[name][prop] = []
Но замена этих значений на итерацию над пустым списком , который вы только что добавили, не имеет большого смысла (если, возможно, если вы добавляете что-то в этот список в какой-то момент). Поэтому, возможно, вы могли бы просто переместить тест на None
-ness прямо перед итерацией:
prereqs = self.name2info[name]['prereqs']
if prereqs is not None:
for prereq in prereqs:
do_stuff(prereq)
Немного отошел от темы, но если вам когда-нибудь захочется проверить, является ли элемент итеративным, обычным (питоническим) способом было бы написать:
try:
my_iterable_obj = iter(my_obj)
except TypeError:
# not iterable