Более простой список дел - PullRequest
0 голосов
/ 14 мая 2018

Мне нужно протестировать много дел, но это решение не очень элегантно:

if '22' in name:
    x = 'this'
elif '35' in name:
    x = 'that'
elif '2' in name:    # this case should be tested *after* the first one
    x = 'another'
elif '5' in name:
    x = 'one'
# and many other cases

Есть ли способ сделать эту последовательность дел со списком?

L = [['22', 'this'], ['35', 'that'], ['2', 'another'], ['5', 'one']]

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Используйте next, чтобы получить первое значение из генератора.

x = next((val for (num, val) in L if num in name), 'default value')

Первый аргумент next - это генератор для использования, а второй - значение по умолчанию, если генератор полностью потребляется без выдачи значения.

0 голосов
/ 14 мая 2018

Да, это называется цикл :

for cond, val in L:
    if cond in name:
        x = val
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...