如何使用defaultdict创建一个lambda函数的字典?

时间:2014-09-20 23:45:55

标签: python python-2.7 dictionary lambda defaultdict

我正在尝试使用lambda函数创建一个字典,该函数可以根据键中的第二个术语有条件地插入一个值。

Example:
wts = defaultdict(lambda x: if x[1] == somevalue then 1 else 0)

1 个答案:

答案 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