Считать вхождение в списке
Я хотел бы получить совет, чтобы лучше написать следующую строку...
# raise exception in case of backendport or frontendport are not valid
assert len([backend_port['backend']['bport'] for backend_port in self.backend if backend_port['backend']['bport'] == '0']) >= 0, 'backend port not valid: BPNVAL'
assert self.port == 0, 'frontend port not valid: FPNVAL'
Я хотел бы знать, есть ли в словаре с именем backend хотя бы 1 порт, определенный как "0", и вызвать исключение таким образом.
Спасибо!
1 ответ
Давайте сначала исправим >=0
ошибка, которая всегда верна для списка:
len([backend_port['backend']['bport'] for backend_port in self.backend
if backend_port['backend']['bport'] == '0']) > 0
Затем пропустите len
вызов:
[backend_port['backend']['bport'] for backend_port in self.backend
if backend_port['backend']['bport'] == '0']
Это понимание списка является логическим выражением, которое истинно, когда список не пуст. Но весь список не нужен, и any
и понятнее, и быстрее:
any(backend_port['backend']['bport'] == '0' for backend_port in self.backend)