【问题标题】:How to combine two lists using lambda function如何使用 lambda 函数组合两个列表
【发布时间】:2020-10-02 10:12:42
【问题描述】:

我有两个列表

names = ['Bruce', 'Clark', 'Peter', 'Logan', 'Wade']
heroes = ['Batman', 'Superman', 'Spiderman', 'Wolverine', 'Deadpool']

从这些列表中,我想要一个 {'name': 'hero'} 的字典,用于每个名称,使用 lambda 函数的英雄。这是我想要的输出:

{'Bruce': 'Batman', 'Clark': 'Superman', 'Peter': 'Spiderman', 'Logan': 'Wolverine', 'Wade': 'Deadpool'}

我有下面的代码,但是当我尝试使用 lambda 函数将它组合在一起时,我没有得到预期的结果。这是使用字典推导的代码

dc_dict = {name: hero for name, hero in zip(names, heroes)}
print(dc_dict)

我正在尝试使用 lambda 函数复制上述逻辑,但无法按预期工作。这是我想出的。

l_dict = dict(lambda names[name]:heroes[hero] for (name, hero) in zip(names, heroes))
print(l_dict)

TIA

【问题讨论】:

  • 您可以使用:dict(zip(names, heroes)),这样会更容易。为什么使用lambda
  • 你只是不需要一个 lambda,但它应该生成一个包含两个项目的元组,因为 dict 期望这样的元组的可迭代。最后一个示例中括号中的代码是一个生成器表达式(类似于 dict 理解),在这种情况下不需要 lambda ib。
  • lambda 应该做什么?你没有调用它,dict() 不知道调用它。
  • 是的,只是想挑战自己,看看我是否可以使用 lambda 组合起来。
  • Python 中的 Lambda 是一种无需命名(因此存储)函数即可定义函数的方法——不确定它在这里是否有用。最有效的将是使用 Python 原生 (dict(zip()))。见stackoverflow.com/questions/209840/…

标签: python python-3.x dictionary lambda dictionary-comprehension


【解决方案1】:

只是想挑战自己,看看我是否可以使用 一个拉姆达

既然我们已经确定 lambda 不是必需的,如果不是完全不受欢迎,让我们这样做:

names = ['Bruce', 'Clark', 'Peter', 'Logan', 'Wade']
heroes = ['Batman', 'Superman', 'Spiderman', 'Wolverine', 'Deadpool']

l_dict = dict((lambda n, h: {name: hero for name, hero in zip(n, h)})(names, heroes))
print(l_dict)

问题是您不能将lambda 表达式传递给dict(),只能将调用lambda 表达式的结果传递给lambda

【讨论】:

  • 很高兴知道这一点。谢谢cdlane
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 2018-05-09
  • 2021-11-05
相关资源
最近更新 更多