Skip to main content
 首页 » 编程设计

python之是否可以在不创建新字典的情况下在 for 循环中使用字典理解

2025年05月04日14pengyingh

在 Python 3.5 中,我尝试使用 dict 理解迭代 for 循环,但它似乎不像使用 list< 那样工作。以下将被报告为语法错误(不是 PyCharm,仅在运行时):

for k, v in (k, v for k, v in {"invalid": 1, "valid": 2}.items() if k == "valid"):  # syntax error 
    print("Valid: " + (str(v))) 

虽然以下工作:

for e in (e for e in ["valid", "invalid"] if e == "valid"):  # works 
    print(e) 

我知道创建一个新的 dict 会起作用(例如 ),但我想避免开销,因为我只是在对元素进行操作。

for k, v in {k: v for k, v in my_dict.items() if k == "valid"}.items():  # works 
    print("Valid: " + (str(k))) 

当然,我可以在循环中使用一个普通的旧 if k == "valid": continue 条件,但我想了解为什么 dict 理解似乎比 list 更受限制。

请您参考如下方法:

Python 需要在第一个 k, v 周围加上括号。

((k, v) for k, v in {"invalid": 1, "valid": 2}.items() if k == "valid") 

否则看起来你正在尝试创建一个包含两个元素的元组:

  1. k
  2. v 为 k,v 为 ...

第二个在句法上无效。 (如果你在它周围加上括号,使它成为一个生成器表达式。)