【问题标题】:python: How to convert function to lambda expression?python:如何将函数转换为 lambda 表达式?
【发布时间】:2020-02-26 23:31:49
【问题描述】:

我有以下将列表转换为字典的函数。

def convert2Dict(item_list):
    d = {}
    for name in item_list:
       d.setdefault(name,0)
       d[name] += 1
    return (d)

当我传递如下列表时:

 takeOff_Airport = convert2Dict(takeOff_Airport)

我得到一个像这样的字典:

{'LPPD': 4, 'DAAE': 1, 'EDDH': 16, ...... }

如果我尝试构建如下地图函数:

list(map(convert2Dict, takeOff_Airport))

我明白了:

[{'L': 1, 'P': 2, 'D': 1}, {'D': 1, 'A': 2, 'E': 1}, ....}

这不是逐字迭代而是逐字符进行。

知道如何改变它吗?

【问题讨论】:

  • 看起来你的 convert2Dict 函数最好用 collections.Counter 代替
  • 我看不出这与 lambda 有什么关系。一个 lambda 函数不能做任何 def 函数不能做的事情。
  • 由于代码中的其他部分而引发错误,需要按照它的呈现方式。
  • lambda 和这个问题有什么关系?
  • 你也没有提供minimal reproducible example

标签: python python-3.x lambda


【解决方案1】:

当你写作时

list(map(convert2Dict, takeOff_Airport))

你实际上是在表演

result = []
for key in takeOff_Airpot:
    result.append(covert2Dict(key))

也就是说,您将covert2Dict 函数应用于字典covert2Dict 中的每个,然后将所有结果收集到一个列表中。

如果您希望您的函数对 takeOff_Airport 本身进行操作,只需将其作为参数直接传递即可。如果您想对迭代中的每个元素执行某些操作,您只需要使用 map 或其亲属。

【讨论】:

  • 谢谢,我明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
相关资源
最近更新 更多