gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:03:32 24 4
gpt4 key购买 nike

在 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 为 ...

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

关于python - 是否可以在不创建新字典的情况下在 for 循环中使用字典理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com