python: Как преобразовать функцию в лямбда-выражение? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть следующая функция, которая преобразует список в диктовку.

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

Который вместо итерации слово за словом делает это символ за символом .

Есть идеи, как это изменить?

1 Ответ

1 голос
/ 27 февраля 2020

Когда вы пишете

list(map(convert2Dict, takeOff_Airport))

, вы по существу выполняете

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

, то есть вы применяете функцию covert2Dict к каждой клавише в словарь covert2Dict, а затем собирать все результаты в список.

Если вы хотите, чтобы ваша функция работала с самим takeOff_Airport, просто передайте ее непосредственно в качестве аргумента. Вам нужно использовать map или его родственников, только если вы хотите выполнить какое-то действие с каждым элементом итерируемого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...