from itertools import product
lst = [dict(zip(a,pair)) for pair in product(b,b)]
Output:
[{'p': True, 'q': True},
{'p': True, 'q': False},
{'p': False, 'q': True},
{'p': False, 'q': False}]
EDIT:
Since you say a
can be of any length, in that case you don't really need 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]
Output:
[{'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}]