从两个数组创建所有可能的组合
Creating all possible combinations from two arrays
我正在想办法解决以下问题:
给定任意两个数组 'a' 和 'b' 我想创建所有组合列表,每个组合应包含 'a' 中的一个元素和 'a' 中的一个元素的元组=21=]
例如:
a = ['p', 'q'], b = [True, False]
输出应如下所示:
[{'p': False, 'q': False}, {'p': False, 'q': True}, {'p': True, 'q':
False}, {'p': True, 'q': True}]
from itertools import product
dicts = [{k:v for k,v in zip(keys, tup)} for tup in list(product(values, repeat=len(keys)))]
嘿,你可以将 itertools.product 与 repeat=2
一起使用
这是一个构建字典列表的工作示例
[{k1:v1, k2:v2} for k1,v1,k2,v2 in itertools.product(a,b,repeat=2) if k1 != k2]
a = ['p', 'q']
b = [True, False]
import itertools
result = [{values[0]: values[1]} for values in list(itertools.product(a,b))]
print(result)
这是你需要的吗?
from itertools import product
lst = [dict(zip(a,pair)) for pair in product(b,b)]
输出:
[{'p': True, 'q': True},
{'p': True, 'q': False},
{'p': False, 'q': True},
{'p': False, 'q': False}]
编辑:
既然你说 a
可以是任意长度,那么你就不需要 b
.
from itertools import permutations
import numpy as np
a = ['p','q','r','s','t']
list1 = list(permuations(a))
set1 = {tuple(np.array(a) == np.array(i)) for i in list1}
final_list = [dict(zip(a,i)) for i in set1]
输出:
[{'p': True, 'q': False, 'r': False, 's': False, 't': False},
{'p': True, 'q': False, 'r': True, 's': True, 't': False},
{'p': False, 'q': False, 'r': False, 's': False, 't': True},
{'p': True, 'q': False, 'r': True, 's': False, 't': False},
{'p': False, 'q': False, 'r': True, 's': True, 't': True},
{'p': True, 'q': False, 'r': False, 's': True, 't': False},
{'p': False, 'q': False, 'r': False, 's': True, 't': True},
{'p': False, 'q': False, 'r': True, 's': False, 't': True},
{'p': False, 'q': True, 'r': False, 's': False, 't': False},
{'p': False, 'q': True, 'r': True, 's': True, 't': False},
{'p': False, 'q': True, 'r': False, 's': True, 't': False},
{'p': False, 'q': True, 'r': True, 's': False, 't': False},
{'p': True, 'q': True, 'r': True, 's': False, 't': False},
{'p': True, 'q': True, 'r': False, 's': True, 't': False},
{'p': True, 'q': True, 'r': False, 's': False, 't': False},
{'p': True, 'q': True, 'r': False, 's': False, 't': True},
{'p': True, 'q': False, 'r': False, 's': True, 't': True},
{'p': True, 'q': False, 'r': True, 's': False, 't': True},
{'p': False, 'q': False, 'r': False, 's': True, 't': False},
{'p': False, 'q': False, 'r': True, 's': False, 't': False},
{'p': True, 'q': False, 'r': False, 's': False, 't': True},
{'p': False, 'q': False, 'r': False, 's': False, 't': False},
{'p': False, 'q': False, 'r': True, 's': True, 't': False},
{'p': False, 'q': True, 'r': False, 's': True, 't': True},
{'p': False, 'q': True, 'r': True, 's': False, 't': True},
{'p': True, 'q': True, 'r': True, 's': True, 't': True},
{'p': False, 'q': True, 'r': False, 's': False, 't': True}]
我正在想办法解决以下问题:
给定任意两个数组 'a' 和 'b' 我想创建所有组合列表,每个组合应包含 'a' 中的一个元素和 'a' 中的一个元素的元组=21=]
例如:
a = ['p', 'q'], b = [True, False]
输出应如下所示:
[{'p': False, 'q': False}, {'p': False, 'q': True}, {'p': True, 'q':
False}, {'p': True, 'q': True}]
from itertools import product
dicts = [{k:v for k,v in zip(keys, tup)} for tup in list(product(values, repeat=len(keys)))]
嘿,你可以将 itertools.product 与 repeat=2
这是一个构建字典列表的工作示例
[{k1:v1, k2:v2} for k1,v1,k2,v2 in itertools.product(a,b,repeat=2) if k1 != k2]
a = ['p', 'q']
b = [True, False]
import itertools
result = [{values[0]: values[1]} for values in list(itertools.product(a,b))]
print(result)
这是你需要的吗?
from itertools import product
lst = [dict(zip(a,pair)) for pair in product(b,b)]
输出:
[{'p': True, 'q': True},
{'p': True, 'q': False},
{'p': False, 'q': True},
{'p': False, 'q': False}]
编辑:
既然你说 a
可以是任意长度,那么你就不需要 b
.
from itertools import permutations
import numpy as np
a = ['p','q','r','s','t']
list1 = list(permuations(a))
set1 = {tuple(np.array(a) == np.array(i)) for i in list1}
final_list = [dict(zip(a,i)) for i in set1]
输出:
[{'p': True, 'q': False, 'r': False, 's': False, 't': False},
{'p': True, 'q': False, 'r': True, 's': True, 't': False},
{'p': False, 'q': False, 'r': False, 's': False, 't': True},
{'p': True, 'q': False, 'r': True, 's': False, 't': False},
{'p': False, 'q': False, 'r': True, 's': True, 't': True},
{'p': True, 'q': False, 'r': False, 's': True, 't': False},
{'p': False, 'q': False, 'r': False, 's': True, 't': True},
{'p': False, 'q': False, 'r': True, 's': False, 't': True},
{'p': False, 'q': True, 'r': False, 's': False, 't': False},
{'p': False, 'q': True, 'r': True, 's': True, 't': False},
{'p': False, 'q': True, 'r': False, 's': True, 't': False},
{'p': False, 'q': True, 'r': True, 's': False, 't': False},
{'p': True, 'q': True, 'r': True, 's': False, 't': False},
{'p': True, 'q': True, 'r': False, 's': True, 't': False},
{'p': True, 'q': True, 'r': False, 's': False, 't': False},
{'p': True, 'q': True, 'r': False, 's': False, 't': True},
{'p': True, 'q': False, 'r': False, 's': True, 't': True},
{'p': True, 'q': False, 'r': True, 's': False, 't': True},
{'p': False, 'q': False, 'r': False, 's': True, 't': False},
{'p': False, 'q': False, 'r': True, 's': False, 't': False},
{'p': True, 'q': False, 'r': False, 's': False, 't': True},
{'p': False, 'q': False, 'r': False, 's': False, 't': False},
{'p': False, 'q': False, 'r': True, 's': True, 't': False},
{'p': False, 'q': True, 'r': False, 's': True, 't': True},
{'p': False, 'q': True, 'r': True, 's': False, 't': True},
{'p': True, 'q': True, 'r': True, 's': True, 't': True},
{'p': False, 'q': True, 'r': False, 's': False, 't': True}]