사용 itertools.product()
: 값이 임의 현재 사전 주문에 반환되는
from itertools import product
for combo in product(*somedict.values()):
참고. 다시 같은 키 사전을 원한다면
keys = ('foo', 'bar', 'baz')
for combo in product(*(somedict[k] for k in keys)):
사용 zip()
:
for combo in product(*somedict.values()):
newdict = dict(zip(somedict.keys(), combo))
데모 :
당신은 키의 특정 순서가 필요한 경우는, 그 순서를 제공해야합니다
>>> from itertools import product
>>> somedict = {'foo': [1, 2], 'bar': ['a', 'b', 'c'], 'baz': [42, 81]}
>>> for combo in product(*somedict.values()):
... print combo
...
(42, 1, 'a')
(42, 1, 'b')
(42, 1, 'c')
(42, 2, 'a')
(42, 2, 'b')
(42, 2, 'c')
(81, 1, 'a')
(81, 1, 'b')
(81, 1, 'c')
(81, 2, 'a')
(81, 2, 'b')
(81, 2, 'c')
>>> for combo in product(*somedict.values()):
... print dict(zip(somedict.keys(), combo))
...
{'bar': 'a', 'foo': 1, 'baz': 42}
{'bar': 'b', 'foo': 1, 'baz': 42}
{'bar': 'c', 'foo': 1, 'baz': 42}
{'bar': 'a', 'foo': 2, 'baz': 42}
{'bar': 'b', 'foo': 2, 'baz': 42}
{'bar': 'c', 'foo': 2, 'baz': 42}
{'bar': 'a', 'foo': 1, 'baz': 81}
{'bar': 'b', 'foo': 1, 'baz': 81}
{'bar': 'c', 'foo': 1, 'baz': 81}
{'bar': 'a', 'foo': 2, 'baz': 81}
{'bar': 'b', 'foo': 2, 'baz': 81}
{'bar': 'c', 'foo': 2, 'baz': 81}
콤보 (값)와 해당 키를 동시에 가져올 수 있습니까? – KaliMa
@KaliMa : 키는 값과 같은 순서로 주어집니다 :'somedict.keys()'는 값의 순서와 일치합니다. –