首页 > 解决方案 > python:如何将函数转换为 lambda 表达式?

问题描述

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

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}, ....}

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

知道如何改变它吗?

标签: pythonpython-3.xlambda

解决方案


当你写

list(map(convert2Dict, takeOff_Airport))

你本质上是在表演

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

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

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


推荐阅读