2017-04-25 26 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