我正在努力成为一个好的 pythonista 并在可能的情况下使用列表推导......
为什么这不起作用?
[del my_dict[r] for r in to_remove]
to_remove
目标是从我的 dict 对象中删除列表中的条目my_dict
:
for r in to_remove:
del my_dict[r]
工作正常,但我试图用列表推导来做到这一点
我正在努力成为一个好的 pythonista 并在可能的情况下使用列表推导......
为什么这不起作用?
[del my_dict[r] for r in to_remove]
to_remove
目标是从我的 dict 对象中删除列表中的条目my_dict
:
for r in to_remove:
del my_dict[r]
工作正常,但我试图用列表推导来做到这一点
您不应该对副作用使用列表推导,它不是 pythonic。
应该使用一个简单的 for 循环。
因为del X
是一个不应该那样使用的语句。它在语法上是不正确的。
只是:
for r in to_remove:
del my_dict[r]
基本上,只需遍历列表即可:
for r in to_remove:
del my_dict[r]
你可以这样做,但我会听 jamylak 的。当然,这是返回一个新列表,而不是从中删除my_dict
my_dict = [x for x in my_dict if x not in to_remove]
你可以这样做:
[my_dict.pop(r) for r in to_remove]
.pop
返回已删除键的值,它会比del
(见这里)慢一点,而不是最“pythonic”的方式来做到这一点。所以你可能不应该像其他人建议的那样。