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

时间:2012-08-08 10:00:41

标签: python

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

为什么这不起作用?

[del my_dict[r] for r in to_remove]

目标是从我的dict对象to_remove中删除列表my_dict中的条目 这样:

for r in to_remove:
  del my_dict[r]

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

5 个答案:

答案 0 :(得分:10)

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

应该使用简单的for循环。

答案 1 :(得分:9)

因为del X是一个不应该像这样使用的语句。它在语法上是不正确的。

只需:

for r in to_remove:
    del my_dict[r]

答案 2 :(得分:3)

  1. 你没有从列表理解中获得任何东西,因为你没有在新名单之后。
  2. del不是函数,因此您无法将其作为列表推导的一部分进行调用。
  3. 基本上,只需迭代列表:

    for r in to_remove:
        del my_dict[r]
    

答案 3 :(得分:0)

可以这样做,但我会听Jamylak。当然,这将返回列表,而不是从my_dict

中删除
my_dict = [x for x in my_dict if x not in to_remove]

答案 4 :(得分:0)

您可以这样做:

[my_dict.pop(r) for r in to_remove]

.pop返回已删除键tho的值,它会比delsee here)慢一点,而不是最“ pythonic”的方式。因此,您可能不应该像其他人所建议的那样。