Вы можете попробовать написать общую функцию фильтра:
def filter(dict, by_key = lambda x: True, by_value = lambda x: True):
for k, v in dict.items():
if (by_key(k) and by_value(v)):
yield (k, v)
или
def filter(dict, by_key = lambda x: True, by_value = lambda x: True):
return dict((k, v) for k, v in dict.items() if by_key(k) and by_value(v))
и тогда вы можете сделать это:
new_d = dict(filter(d, by_key = lambda k: k != 'None'))
Обратите внимание, что это написано для совместимости с Python 3. Пробег может отличаться.
Крутая вещь в этом заключается в том, что он позволяет передавать произвольные лямбда-выражения для фильтрации вместо жесткого кодирования определенного условия. Плюс, это не медленнее, чем любое другое решение здесь. Кроме того, если вы используете первое решение, которое я предоставил, вы можете перебрать результаты.