2011-09-16 59 views
2

我有兩個詞典形式的哈希表。這些鍵將功能映射到所述功能的出現列表。與兩個字典匹配的所有密鑰的值的產品列表

a_dict = {'a': [1,2], 'b': [2,], 'c': [1,3]} 
b_dict = {'a': [6], 'c': [4]} 

我需要的是列表或理想,它包含發生的所有組合的兩個匹配功能numpy的陣列。因此,在這種情況下:

result = [[1,6], 
      [2,6], 
      [1,4], 
      [3,4]] 

由於這是在某些時候應該儘可能快地在大類型的字典上運行,我希望利用內涵,因爲它們被用Cython瞭解。但他們只讓我到這裏:

>>> [itertools.product(value, a_dict[key]) for key,value in b_dict.items()] 
[<itertools.product object at 0x1004a2960>, <itertools.product object at 0x1004a29b0>] 

感謝您的幫助!

+0

順便說一句,有沒有隻存在於'b_dict'中的任何項目? – eph

+0

是的。這幾乎是有保證的。 – John

回答

3
import numpy as np 
import itertools 

a_dict = {'a': [1,2], 'b': [2,], 'c': [1,3]} 
b_dict = {'a': [6], 'c': [4]} 

print(list(itertools.chain.from_iterable(
    itertools.product(value, b_dict[key]) for key,value in a_dict.iteritems() 
    if key in b_dict))) 
# [(1, 6), (2, 6), (1, 4), (3, 4)] 
相關問題