跳到内容

手动字典推导式 (PERF403)

源自 Perflint linter。

有时提供修复。

作用

检查可以被字典推导式替代的 for 循环。

为什么这不好?

当在 for 循环中创建或扩展字典时,优先使用字典推导式。推导式更具可读性且性能更好。

例如,当比较 {x: x for x in list(range(1000))}for 循环版本时,在 Python 3.11 上推导式快约 10%。

请注意,与所有 perflint 规则一样,这仅用作微优化,并且在大多数情况下对性能的影响可以忽略不计。

示例

pairs = (("a", 1), ("b", 2))
result = {}
for x, y in pairs:
    if y % 2:
        result[x] = y

建议改为

pairs = (("a", 1), ("b", 2))
result = {x: y for x, y in pairs if y % 2}

如果您要附加到现有字典,请改用 update 方法。

pairs = (("a", 1), ("b", 2))
result.update({x: y for x, y in pairs if y % 2})