2014-09-30 39 views
-3

如果我有两个字典(在我的计划有两个以上):充分利用不同的字典普通钥匙,蟒蛇

a={'ab':3, 'bc':4, 'cj':2} 
b={'ab':2, 'cd':2, 'ed':2, 'cj':4} 

,并希望得到他们之间的共同键:

common_keys=['ab','cj'] 

我该怎么办?我知道set.intersection但不知道如何将字典键变成一组。

回答

4

使用带有dict.viewkeys()和设置操作字典视图:

common_keys = a.viewkeys() & b.viewkeys() & c.viewkeys() 

如果您正在使用Python 3取而代之的是,dict.keys() method已经返回一个字典视图:

common_keys = a.keys() & b.keys() & c.keys() 

无论是操作返回set object

演示:

>>> a = {'ab': 3, 'bc': 4, 'cj': 2} 
>>> b = {'ab': 2, 'cd': 2, 'ed': 2, 'cj': 4} 
>>> c = {'ab': 6, 'ad': 2, 'dd': 2, 'cj': 1} 
>>> a.viewkeys() & b.viewkeys() & c.viewkeys() 
set(['cj', 'ab']) 
+0

为什么使用套比使用viewkeys快? – 2014-09-30 12:56:23

+0

@PadraicCunningham:设置比视图键快吗? – 2014-09-30 12:56:59

+0

使用OP的代码,'viewkeys - > 1.15μsper loop','set(a).intersection ... - > 706 ns per loop ' – 2014-09-30 12:58:30