我有两个字典形式的哈希表。键映射功能到所述功能的出现列表。
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 :(得分: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)]