2011-09-16 3 views
2

두 개의 해시 테이블이 사전 형태로 있습니다. 키는 피쳐를 피쳐의 발생리스트로 맵핑한다.두 개의 사전에서 일치하는 모든 키의 값 목록 제품

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

필자가 필요로하는 것은 목록 또는 이상적인 두 개의 일치하는 기능에 대한 모든 항목 조합을 포함하는 배열입니다. 이 경우 그래서 :

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

이 어떤 점에서 때문에이 내가 그들 사이 썬 이해되기 때문에 함축를 사용하는 바라고 빨리 가능한 한 많은 dicts에 실행할 예정이다. 하지만 그들은 나를 여기로 데려갔습니다 :

>>> [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)] 
관련 문제