Python Find Min значение во вложенном списке с двумя условиями - PullRequest
0 голосов
/ 17 октября 2018

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

a = [['246', 'Y', '', '29386.00', '29387.00'], ['247', 'N', '', '29286.00', '29287.00'], ['248', 'N', '','', '20919.00'], ['249', 'N', '', '20918.00', '20928.00'], ['250', 'N', '', '29266.00', '29267.00']]

В приведенном выше списке я хотел бы получить минимальное значение 3-го элемента только в том случае, если 3-й элемент не равен нулю или нулю и когда вторым элементом во внутреннем списке является «N».

Итак, для приведенного выше примера списка возвращаемое минимальное значение должно быть 20918, но я получаю пустое значение.

Попробовал это:

>>> min(x[3] for x in a if x[1] == 'N')
''
>>> 

Заранее спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Попробуйте это: min([x[3] for x in a if x[1] == 'N' and x[3] != ''])

Проблема в следующем:

  • значения, которые вы сравниваете, являются строками, например, '20918', а не целыми числами, то есть 20918
  • одно из значений x[3] является пустой строкой, которая "меньше" непустой строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...