[英]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.