我正努力成为一名优秀的pythonista并尽可能使用列表推导......
为什么这不起作用?
[del my_dict[r] for r in to_remove]
目标是从我的dict对象to_remove
中删除列表my_dict
中的条目
这样:
for r in to_remove:
del my_dict[r]
工作正常但我正在尝试使用列表推导
答案 0 :(得分:10)
你不应该对副作用使用列表推导,它不是pythonic。
应该使用简单的for循环。
答案 1 :(得分:9)
因为del X
是一个不应该像这样使用的语句。它在语法上是不正确的。
只需:
for r in to_remove:
del my_dict[r]
答案 2 :(得分: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的值,它会比del
(see here)慢一点,而不是最“ pythonic”的方式。因此,您可能不应该像其他人所建议的那样。