dict-iter-missing-items (PLE1141)
源自 Pylint 代码检查工具。
修复总是可用的。
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
检查 for 循环中缺少调用 .items()
的字典解包。
为什么这不好?
当在 for 循环中迭代字典时,如果字典在未调用 .items()
的情况下被解包,如果键不是包含两个元素的元组,则可能会导致运行时错误。
您很可能正在寻找对(键,值)对的迭代,这只有在调用 .items()
时才能实现。
示例
data = {"Paris": 2_165_423, "New York City": 8_804_190, "Tokyo": 13_988_129}
for city, population in data:
print(f"{city} has population {population}.")
建议改为
data = {"Paris": 2_165_423, "New York City": 8_804_190, "Tokyo": 13_988_129}
for city, population in data.items():
print(f"{city} has population {population}.")
已知问题
如果字典的键是一个元组,例如:
元组键会被解包到 x
和 y
中,而不是键和值。这意味着使用 d.items()
的建议修复会导致不同的运行时行为。 Ruff 无法一致地推断字典键的类型。
修复安全性
由于元组键的已知问题,此修复是不安全的。