Python 3.8+, присваивание в лямбда-функции

У меня есть следующая функция:

sorted(
    [
        #...
    ],
    key=lambda x: (
        x.get("order", {}).get("data") is None,
        x.get("order", {}).get("data"),
    ),
)

Могу ли я использовать присваивание := здесь, чтобы сохранить x.get("order", {}).get("data") в переменной?


person Rudziankoŭ    schedule 16.07.2020    source источник
comment
Используйте понимание списка, прежде чем отсортировать его   -  person user120242    schedule 21.07.2020
comment
Что вы можете. Как это не работает для вас?   -  person L3viathan    schedule 21.07.2020
comment
:= должно работать; но есть также некоторые уродливые альтернативы для более старых версий   -  person tobias_k    schedule 21.07.2020


Ответы (1)


Вы можете, просто убедитесь, что выражение правильно заключено в скобки:

sorted(
    [
        #...
    ],
    key=lambda x: (
        (y := x.get("order", {}).get("data")) is None,
        y,
    ),
)
person L3viathan    schedule 21.07.2020