小python代码重构

时间:2010-05-12 14:18:45

标签: python dictionary

我有这段代码,在我看来相当丑陋,我想知道如何做得更好:

if dic.get(key, None) is None:
   dic[key] = None

优雅的要点; - )

3 个答案:

答案 0 :(得分:10)

d.setdefault(key) # sets d[key] to None if key is not in d

答案 1 :(得分:7)

if key not in dic:
    dic[key] = None

这可能不像Olivier的代码那么短,但至少它是明确而快速的。

请不要使用dict作为变量名称,它会内置阴影。

答案 2 :(得分:3)

import collections

mydict = collections.defaultdict(lambda: None)

现在,mydict[akey]的所有访问权限(如果akey未作为mydict中的密钥存在)将mydict[akey]设置为None作为副作用

请注意defaultdict的初始化程序需要一个无参数可调用,而lambda则为{<1}}。