我正在尝试创建一个包含lambda函数的字典,该函数可以有条件地基于键中的第二项插入一个值。

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

最佳答案

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

关于python - 如何使用defaultdict创建带有lambda函数的字典?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25954347/

10-12 16:42