【发布时间】:2019-06-15 23:09:05
【问题描述】:
我对 lambda 函数和标量有 dict 理解:
d = {k: lambda x : x.sum() if 'a' in k else 'yes' for k in ['bac','sss','asa']}
print (d)
{'bac': <function <dictcomp>.<lambda> at 0x00000000031891E0>,
'sss': <function <dictcomp>.<lambda> at 0x000000000D887EA0>,
'asa': <function <dictcomp>.<lambda> at 0x000000000D887B70>}
如果想要两个标量都很好用:
d = {k: 'no' if 'a' in k else 'yes' for k in ['bac','sss','asa']}
print (d)
{'bac': 'no', 'sss': 'yes', 'asa': 'no'}
预期输出 - 标量和 lambda 函数的组合:
print (d)
{'bac': <function <dictcomp>.<lambda> at 0x00000000031891E0>,
'sss': 'yes',
'asa': <function <dictcomp>.<lambda> at 0x000000000D887B70>}
发生了什么?为什么它不工作?正确的做法是什么?
【问题讨论】:
-
d = {k: (lambda x : x.sum()) if 'a' in k else 'yes' for k in ['bac','sss','asa']}有效(将 lambda 括在括号中)但我不知道为什么。据推测,在您当前的方法中,表达式的其余部分将包含在 lambda 中。
标签: python python-3.x dictionary lambda dictionary-comprehension