繁体   English   中英

python删除列表理解中的字典键

[英]python delete dict keys in list comprehension

为什么下面的表达式,旨在删除字典中的多个键,无效? event是一个字典)

[del event[key] for key in ['selected','actual','previous','forecast']]

用什么来代替它的最少表达是什么?

你不应该这里使用列表理解。 列表推导式非常适合构建值列表,不应用于一般循环。 对副作用使用列表理解是对完美列表对象的内存浪费。

列表推导式也是表达式,因此只能包含其他表达式。 del是一个语句,不能在表达式中使用。

只需使用for循环:

# use a tuple if you need a literal sequence; stored as a constant
# with the code object for fast loading
for key in ('selected', 'actual', 'previous', 'forecast'):
    del event[key]

或使用字典理解重建字典:

# Use a set for fast membership testing, also stored as a constant
event = {k: v for k, v in event.items()
         if k not in {'selected', 'actual', 'previous', 'forecast'}}

后者创建了一个全新的字典,因此对同一对象的其他现有引用不会看到任何更改。

如果必须在表达式中使用键删除,可以使用object.__delitem__(key) ,但这不是地方; 你最终会得到一个带有None对象的列表,一个你立即丢弃的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM