【发布时间】:2019-07-12 14:25:34
【问题描述】:
我需要通过 for 循环定义一个 python lambda 函数字典。每个 lambda 函数都需要相对字典键的值才能工作,但我希望避免将这样的键作为参数传递。 这是我的问题的虚拟版本。
给定
a = {'bar': 0, 'foo': 1} # a reference dictionary
dic1 = {'bar': lambda x: x['bar'], 'foo': lambda x: x['foo']}
dic2 = {key: lambda x: x[key] for key in a}
我希望 dic1 和 dic2 做同样的事情,但是只有 dic1 的行为符合我的意愿。 特别是,
print(dic1['bar'](a), dic1['foo'](a))
print(dic2['bar'](a), dic2['foo'](a))
是
0 1
1 1
而不是
0 1
0 1
【问题讨论】:
-
这是一个有趣的问题,@jdehesa 提供了一个漂亮的解决方案,但我仍然必须问这可能有什么用?我的意思是,这是一个简单的解决方法......
a['bar']... -
@Tomerikoo 我同意这个问题的虚拟版本可能看起来没用。在我的例子中,lambda 函数应该基于它们的键以一种非平凡的方式起作用。
标签: python python-3.x