лямбда-функция, возвращающая имя функции - PullRequest
0 голосов
/ 18 марта 2019

У меня есть список, где предметы являются словарями. значения словаря представлены в формате Unicode, и я пытаюсь сравнить значения Unicode со строками. Итак, я попробовал приведенную ниже лямбда-функцию, ожидающую преобразование юникода в строку;

a=[(lambda x: x.unicode('UTF-8') ) for i in paid_submissions[0].values()]

print(a)

[в 0x11335db18>, в 0x113357d70>, в 0x113357b90>, в 0x113357a28>, в 0x1133b5050>, в 0x1133b50c8>]

1 Ответ

3 голосов
/ 18 марта 2019

Потому что вы просто возвращаете лямбда-объект, не вызывая его ни для чего.Если я понимаю, что вы пытаетесь сделать правильно, вам нужно было бы назвать лямбду на i следующим образом.

a = [(lambda x: x.unicode('UTF-8'))(i) for i in paid_submissions[0].values()]

Но выражение lambda - пустая трата.Это может быть легче (и более эффективно) записано как

a = [i.unicode('UTF-8') for i in paid_submissions[0].values()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...