python for循环中的赋值可能吗?

发布于 2024-09-06 14:19:37 字数 365 浏览 8 评论 0原文

我有一本字典 d (和一个单独的排序键列表,keys)。我希望循环只处理值为 False 的条目 - 所以我尝试了以下操作:

for key in keys and not d[key]:
 #do foo

我想我对 python sytax 的理解不是我想象的那样 - 因为分配不应该发生上面,ai 得到一个实例化错误。

下面的代码当然可以工作,但我真的很希望能够使用上面的代码之类的东西..可能吗?

for key in keys:
 if d[key]: continue
  #foo time!

谢谢!

I have a dictionary d (and a seperate sorted list of keys, keys). I wanted the loop to only process entries where the value is False - so i tried the following:

for key in keys and not d[key]:
 #do foo

I suppose my understanding of python sytax is not what i thought it was - because the assignment doesnt suppose to have happened above, and a i get an instanciation error.

The below works of course, but I'd really like to be able to use something like the code above.. possible?

for key in keys:
 if d[key]: continue
  #foo time!

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暮凉 2024-09-13 14:19:37

为此使用 Genex。

for key in (k for k in keys if not d[k]):
   ....

Use a genex for this.

for key in (k for k in keys if not d[k]):
   ....
扛起拖把扫天下 2024-09-13 14:19:37

如果你的字典是相反的(当值应该被扫描时为真)你可以使用:

for key in filter(d.get, keys):
    ...

If you dict was opposite (True iff the value should be scanned) you could use:

for key in filter(d.get, keys):
    ...
初见终念 2024-09-13 14:19:37
import itertools as it

for key in it.ifilterfalse(d.get, keys):
   ...

itertools 通常提供将功能打包到迭代中的最佳方法(==循环;-)。

import itertools as it

for key in it.ifilterfalse(d.get, keys):
   ...

itertools often offers the best ways to pack functionality into iterations (==loops;-).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文