for item1 in dict[1]:
for item2 in dict[2]:
for item3 in dict[3]:
and so on假设在dict中有n个键。是否有一种方法一次使用迭代工具生成n个条目?
换句话说,我能用迭代工具中的东西来复制上面的代码吗?
发布于 2014-06-14 22:21:18
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}https://stackoverflow.com/questions/24224827
复制相似问题