2017-04-25 27 views
1

即時將字典傳遞給變量時嘗試排除某個鍵。例如。現在當傳遞給變量時排除字典的特定鍵

dict1 = { 
    'id': 1, 
    'name' : 'John Woe', 
    'flag' : True, 
    'position' : 'Developer' 
} 

我想將它傳遞給dict2變量時要排除的關鍵flag或任何指定的鍵。通常我可以簡單地硬編碼分配它,但我想要一個動態的方法。

像這樣的:

dict2 = dict1.exclude(['flag', 'position']) 

回答

2
keys_to_exclude = set(('flag',)) 
dict2 = {k:v for k,v in dict1.iteritems() if k not in keys_to_exclude} 

至於批評的評論關於這個是O(MN)的響應 - keys_to_exclude可以是一組,這將使它O(N)用更少的負擔,垃圾收集,與copy/pop解決方案相比。

+0

可以排除一個或多個鍵嗎? –

+0

@ ShiftN'Tab是的,看我的更新。 – khachik

+0

你知道在dict1.copy(),然後dict2.pop('flag')'是否可以在使用大量密鑰的情況下更高效? – VMRuiz