我需要做很多次以下的事情:
value1 = kwargs.get('par1')
if value1 is not None: value1 = int(value1)
是否可以直接通过过滤器(在这种情况下为.get
)传递int
返回的值,仅如果存在匹配?
我当然可以为此实现一个函数,但我想知道是否有更多的pythonic方法。
答案 0 :(得分:3)
你可以通过扩展UserDict
来实现你自己的字典,但是你需要包裹kwargs
,这有点贵(因为kwargs
通常很小但仍然很少... )。
你总是可以调用int()
并捕获异常,但这也会很慢。
你不能修补补丁dict
,因为它是一种内部类型。否则,您可以说dict.getInt = getAsInt
其中getAsInt
是新功能。
您可以使用int(kwargs['par1']) if par1 in kwargs else None
,但这会搜索字典两次。
我将使用新功能:
def asInt(v): return None if v is None else int(v)
value1 = asInt(kwargs['par1'])
答案 1 :(得分:1)
假设你的意思是if value1 is not None
:
value1 = int(kwargs['par1']) if 'par1' in kwargs else None