簡體   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