【问题标题】:Got a syntax error while trying to use lambda function尝试使用 lambda 函数时出现语法错误
【发布时间】:2020-08-05 22:06:48
【问题描述】:

我试图编写一个 lambda 并从字典中提取值,但它返回语法错误。我不知道什么时候出错了,请帮忙


 page2 = {'tsrightdominion.blogspot.com': 0.00034787826123863585,
 'democraticunderground.com': 0.00405450384913243,
 'conservativepunk.com': 0.0004385189536822286,
 'anncoulter.org': 0.0009425724015017965,
 'aldaynet.org': 0.0012959749358987345,
 'gevkaffeegal.typepad.com/the_alliance': 0.0033127018380988433,
 'coxandforkum.com': 0.0026879530285120485,
 'wonkette.com': 0.004395058499406301,
 'hughhewitt.com': 0.006703806759727871,
 'blogsforbush.com': 0.012508582138399097,
 'drudgereport.com': 0.01071241551989842}

 name2 =[lambda val: for key,val in page2.items() if key == 'anncoulter.org']

  File "<ipython-input-44-c0422c8a8a14>", line 1
    name2 =[lambda val: for key,val in page2.items() if key == 'anncoulter.org']
                          ^
SyntaxError: invalid syntax

【问题讨论】:

  • 你使用什么语言?
  • 我正在使用python
  • 我想你在找[val for key,val in page2.items() if key == 'anncoulter.org']
  • 您可能正在混合 lambdas 和列表理解。要提取不需要任何 lambda 的值:只需将 lambda val: 替换为 val
  • 您期望name2 的值是多少?该行中的语法表明您有一个单个元素的列表,该元素是具有一个参数的 lambda 函数。 for 循环不是合法的函数值——这就是你有语法错误的原因。

标签: python lambda


【解决方案1】:

我认为这是正确的语法

name2 = [val for key,val in page2.items() if key == 'anncoulter.org']

结果[0.0009425724015017965]

【讨论】:

  • 请注意,这不是一个 lambda,它是一个列表理解(这似乎确实是 OP 想要的)
  • 当然,这与name2 = page2['anncoulter.org'] 几乎相同(除了它没有包含在列表中)
  • 哈哈,当我在手机上回复时,你打败了我。
  • 大声笑,我应该考虑一下,谢谢你的解释!
【解决方案2】:

我认为您在这里不需要 lambda。您尝试将列表理解和 lambda 一起使用,但在这种情况下不能一起使用。

随你去

[val for key, val in your_dict.items() if your_truth_condition]

万岁,你从 dict 中得到了 val 列表。

【讨论】:

  • 啊!这就是为什么!谢谢!
猜你喜欢
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2019-08-10
  • 2012-03-21
  • 2022-06-15
相关资源
最近更新 更多