删除我想成为一个好pythonista和使用列表理解如果可能的话...Python从字典应用列表解析
为什么不这项工作?
[del my_dict[r] for r in to_remove]
的目标是从我的字典对象my_dict
这在列表中删除to_remove
的条目:
for r in to_remove:
del my_dict[r]
工作正常,但我想用列表内涵做
删除我想成为一个好pythonista和使用列表理解如果可能的话...Python从字典应用列表解析
为什么不这项工作?
[del my_dict[r] for r in to_remove]
的目标是从我的字典对象my_dict
这在列表中删除to_remove
的条目:
for r in to_remove:
del my_dict[r]
工作正常,但我想用列表内涵做
你不应该使用列表理解副作用,这不是pythonic。
应该使用简单的for循环。
因为del X
是一个声明,不打算这样使用。它在语法上不正确。
刚:
for r in to_remove:
del my_dict[r]
+1这应该是公认的答案,因为它提到了真正的原因 – wim 2013-01-29 23:54:25
您可能做到这一点,但我听jamylak。当然还有此函数返回一个新列表,而不是从my_dict
my_dict = [x for x in my_dict if x not in to_remove]
这也可以通过集合来完成,例如, 'set(my_dict.keys())。difference(to_remove)' – 2012-08-08 10:08:24
我只是给OP一个选项来看看。我明确提到这不是一个好的做法,问题在于_list理解_。不过感谢'set'选项,我以前从来没有使用'差异'功能。 – Aesthete 2012-08-08 10:12:07
完全同意,刚刚评论过你没有以这种方式使用套装:) – 2012-08-08 10:13:59
基本上,只要遍历列表,而不是:
for r in to_remove:
del my_dict[r]
列表理解用于从一个旧列表创建一个新的列表,可能检查的条件。为了您的使用,您应该使用循环。 – 2012-08-08 10:05:04
@andy引导,并为所有pythonista的缘故,阅读[PEP8](http://www.python.org/dev/peps/pep-0008/)! – 2012-08-08 10:15:05