Python使用列表推导从字典中删除

and*_*oot 0 python

我想成为一名优秀的pythonista并尽可能使用列表推导...

为什么这不起作用?

[del my_dict[r] for r in to_remove]
Run Code Online (Sandbox Code Playgroud)

我们的目标是删除列表中的条目to_remove从我的字典对象my_dict 本:

for r in to_remove:
  del my_dict[r]
Run Code Online (Sandbox Code Playgroud)

工作正常,但我正在尝试使用列表推导

jam*_*lak 11

你不应该使用列表推导副作用,它不是pythonic.

应该使用一个简单的for循环.


Zau*_*bov 11

因为这del X是一个不应该像那样使用的声明.它在语法上是不正确的.

只是:

for r in to_remove:
    del my_dict[r]
Run Code Online (Sandbox Code Playgroud)

  • +1这应该是公认的答案,因为它提到了真正的原因 (3认同)

akn*_*ds1 5

  1. 您不会从此处的列表理解中获得任何内容,因为您并不是在寻找新列表。
  2. del 不是函数,因此您不能将其作为列表理解的一部分来调用。

基本上,只需迭代列表即可:

for r in to_remove:
    del my_dict[r]
Run Code Online (Sandbox Code Playgroud)