У меня есть этот кусок кода, который, на мой взгляд, довольно уродлив, и мне интересно, как это можно сделать лучше:
if dic.get(key, None) is None: dic[key] = None
Очки за элегантность; -)
d.setdefault(key) # sets d[key] to None if key is not in d
if key not in dic: dic[key] = None
Это может быть не так коротко, как код Оливье, но, по крайней мере, это явно и быстро.
Пожалуйста, не используйте dict в качестве имени переменной, оно встроено в тени.
dict
import collections mydict = collections.defaultdict(lambda: None)
Теперь любой доступ к mydict[akey] (если akey не присутствовал в качестве ключа в mydict) установил mydict[akey] на None в качестве побочного эффекта.
mydict[akey]
akey
mydict
None
Обратите внимание, что инициализатор defaultdict требует вызова без аргументов, откуда lambda.
defaultdict
lambda