跳到内容

针对可迭代对象的不必要的字典推导式 (C420)

Derived from the flake8-comprehensions linter. (源自 flake8-comprehensions linter。)

有时提供修复。

作用

检查当从可迭代对象创建字典时,是否存在不必要的字典推导式。

为什么这不好?

当值是静态的时候,没有必要使用字典推导式从可迭代对象构建字典。

优先使用 dict.fromkeys(iterable) 而不是 {value: None for value in iterable},因为 dict.fromkeys 更具可读性和效率。

示例

{a: None for a in iterable}
{a: 1 for a in iterable}

建议改为

dict.fromkeys(iterable)
dict.fromkeys(iterable, 1)

修复安全性

如果字典推导式中有注释,此规则的修复被标记为不安全,因为注释可能会被删除。

例如,在以下情况下,修复将被标记为不安全

{  # comment 1
    a:  # comment 2
    None  # comment 3
    for a in iterable  # comment 4
}

参考