Python使用列表理解从字典中删除
我想成为一名优秀的蟒蛇学家,尽可能使用列表理解法 为什么这样不行Python使用列表理解从字典中删除,python,Python,我想成为一名优秀的蟒蛇学家,尽可能使用列表理解法 为什么这样不行 [del my_dict[r] for r in to_remove] 目标是从我的dict对象中删除列表中的条目 这: 工作正常,但我正在尝试使用列表理解法,你不应该使用列表理解法来产生副作用,它不是pythonic 应该使用一个简单的for循环。因为delx是一个不应该这样使用的语句。这在语法上是不正确的 只是: 你可以这么做,但我会听杰米拉克的。当然,这是返回一个新列表,而不是从my_dict my_dict = [x f
[del my_dict[r] for r in to_remove]
目标是从我的dict对象中删除列表中的条目
这:
工作正常,但我正在尝试使用列表理解法,你不应该使用列表理解法来产生副作用,它不是pythonic
应该使用一个简单的for循环。因为
delx
是一个不应该这样使用的语句。这在语法上是不正确的
只是:
你可以这么做,但我会听杰米拉克的。当然,这是返回一个新列表,而不是从my_dict
my_dict = [x for x in my_dict if x not in to_remove]
for r in to_remove:
del my_dict[r]
你可以做:
[my_dict.pop(r) for r in to_remove]
.pop
返回已删除的键tho的值,它将比del
()稍微慢一点,并且不是最“pythonic”的方法。因此,您可能不应该像其他人建议的那样。列表理解用于从旧列表创建新列表,可能会检查条件。为了你的使用,你应该使用循环。@andy boot,看在Python的份上,读一读!这也可以通过集合来实现,例如,set(my_dict.keys())。difference(to_remove)
我只是给OP一个查看的选项。我明确提到这不是一个好方法,问题是关于列表理解。感谢set
选项,我以前从未使用过difference
函数。完全同意,如果您没有以这种方式使用set,请发表评论:)+1这应该是公认的答案,因为它提到了真正的原因
for r in to_remove:
del my_dict[r]
[my_dict.pop(r) for r in to_remove]