列表理解中的多个if

时间:2019-05-28 21:54:20

标签: python python-3.x list-comprehension

我已经使用了列表推导功能,应该将keysvalues存储在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 个答案:

答案 0 :(得分:1)

您可以使用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']