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}]