Python имеет троичный оператор, такой как Lua и многие другие языки
Но в отличие от Lua, Python не обрабатывает неопределенную переменную как «ложное» значение, он будет выдает ошибку, если вы пытаетесь оценить неопределенную переменную. В частности, в вашем случае вы получите ошибку ключа, если ключ ticker
отсутствует.
Lua Тройной:
total_volume[ticker] = (total_volume[ticker] or 0) + a
Python Эквивалент:
total_volume[ticker] = (total_volume[ticker] if ticker in total_volume else 0) + a
Где Lua передаст вам значение перед or
, если оно равно truthy
, python передаст вам значение перед if
, когда последующее утверждение будет true
, и значение после else
, когда оно равно false
.
Чтобы безопасно оценить, был ли ключ в словаре, мы можем использовать in
.
Это в основном для демонстрации троичной операции вы использовали в Lua и как это сделать в Python, но это не значит, что это правильный инструмент для этой проблемы.
Более чистое решение, которое я бы предложил:
total_volume[ticker] = total_volume.get(ticker, 0) + 1
Это меньше кода и легче рассуждать. get
вернет total_volume[ticker]
или, если ключ отсутствует в словаре, он вернет значение по умолчанию, 0
.