Несколько ifs в пределах понимания списка - PullRequest
0 голосов
/ 29 мая 2019

Я использовал списочное понимание, которое должно хранить keys и values в переменной itemDict, учитывая тот факт, что некоторые элементы, если они присутствуют в item['keys'], не будут включены в itemDict.Я использовал несколько условий if, чтобы сделать это возможным.

Вот что я пробовал:

itemDict = {item['keys']:item['value'] for item in soup.select('input[keys]') if '$cmdPrint' not in item['name'] and 'btnView' not in item['name'] and 'btnMyDoc' not in item['key']}

Как мне переписать эти условия, чтобы сделатьэто лаконично?

1 Ответ

1 голос
/ 29 мая 2019

Вы можете использовать функцию check и использовать встроенную функцию all.Также переформатируйте понимание для удобства чтения.

def check(item):
    return all(('$cmdPrint' not in item['name'],
           'btnView' not in item['name'],
           'btnMyDoc' not in item['key']))

itemDict = {item['keys']:item['value']
            for item in soup.select('input[keys]')
            if check(item)}

Или используйте его в понимании, но это одно длинное понимание.

itemDict = {item['keys']:item['value']
            for item in soup.select('input[keys]')
            if all(('$cmdPrint' not in item['name'],
                    'btnView' not in item['name'],
                    'btnMyDoc' not in item['key']))}

Или просто используйте обычный цикл for:

itemDict = {}
for item in soup.select('input[keys]')
    if check(item):
        itemDict[item['keys']] = item['value']
...