jim*_*iat 3 python dictionary list-comprehension
为什么以下表达式(旨在删除dict中的多个键)无效?(event是一个字典)
[del event[key] for key in ['selected','actual','previous','forecast']]
Run Code Online (Sandbox Code Playgroud)
替换它的最小表达式是什么?
Mar*_*ers 12
你不应该在这里使用列表理解.列表推导非常适合构建值列表,不应用于一般循环.使用列表理解副作用是在完美的列表对象上浪费内存.
列表推导也是表达式,因此只能包含其他表达式.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]
Run Code Online (Sandbox Code Playgroud)
或者用字典理解重建字典:
# 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'}}
Run Code Online (Sandbox Code Playgroud)
后者创建一个全新的字典,因此对同一对象的其他现有引用将不会看到任何更改.
如果必须在表达式中使用键删除,则可以使用object.__delitem__(key),但这不是地方; 你最终得到一个包含None对象的列表,一个你立即丢弃的列表.
| 归档时间: |
|
| 查看次数: |
2010 次 |
| 最近记录: |