Я действительно ненавижу такой лайнер и советую вам не использовать его для вашей проблемы.
import functools
functools.reduce(lambda x,y : y if 1100 < y['threshold'] < x['threshold'] else x,
values,
{'threshold' : float('inf')}
)['tax']
Вызывает KeyError, если ни одна запись не соответствует условиям
Это тоже работаетно нужно немного больше операций (все еще O (n), нужно перебрать отфильтрованный список, чтобы найти минимум):
min([(v['threshold'], v['tax']) for v in values if v['threshold'] > 1100])[1]
также вызывает ошибку, если ничего не соответствует
Эторешение, которое вы должны сделать (или подобное):
result = None
for value in values:
threshold = value['threshold']
if threshold > 1100 and (not result or threshold < result['threshold']):
result = value
print(result['tax'])
, потому что я не согласен с
@ Shinratensei Я согласен, но я хочу подход к проблеме с одним или двумя вкладышамиПотому что мой код увеличился, и это только часть того, что я делаю.Поэтому я нахожу максимально лаконичный способ.