我正在尝试使用lambda函数创建一个字典,该函数可以根据键中的第二个术语有条件地插入一个值。
Example:
wts = defaultdict(lambda x: if x[1] == somevalue then 1 else 0)
答案 0 :(得分:4)
Python中的conditional expression看起来像:
then_expr if condition else else_expr
在你的例子中:
wts = defaultdict(lambda x: 1 if x[1] == somevalue else 0)
正如khelwood在评论中指出的那样,defaultdict
的工厂函数没有参数。您必须直接覆盖dict.__missing__
:
class WTS(dict):
def __missing__(self, key):
return 1 if key[1] == somevalue else 0
wts = WTS()
或更具可读性:
class WTS(dict):
def __missing__(self, key):
if key[1] == somevalue:
return 1
else:
return 0