有没有办法将其压缩为字典理解?

问题描述

我正在尝试将其精简化,但是在遍历列表时尝试在理解中实现正则表达式会陷入困境。

acl_lines = some_list
hash_dict = {}
for line in acl_lines:
    search = re.search(hash_regex,line)
    if search:
        hash_dict[search.group(2)] = search.group(1)

解决方法

您可以执行以下操作:

hash_dict = {
    s.group(2): s.group(1) 
    for s in (re.search(hash_regex,line) for line in acl_lines) if s
}

为了不再次调用search,请插入一个额外的生成器表达式。