2014-09-30 49 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