Wpis z mikrobloga

Mireczki, help me! Próbuję w #python wygenerować wszystkie możliwe słowniki, gdzie:
- każdy z nich ma 3 elementy
- pierwszy element (key1) może mieć wartości True lub False
- drugi element (key2) może mieć wartości od A do C
- trzeci (key3) - od X do Z

czyli chciałbym uzyskać listę taką jak: [{"key1": True, "key2": "A", "key3": "X"}, {"key1": True, "key2": "B", "key3": "Z"}...], gdzie byłyby wszystkie możliwe słowniki. Domyślam się, że pewnie to co szukam jest w itertools, ale kompletnie nie pamiętam jak to ugryźć (,)

Thanks from mountain!

#programowanie #naukaprogramowania
  • 3
import itertools as it
my_dict={'key1':['True','False'],'key2':['A','B','C'],'key3':['X','Y','Z']}
allNames = sorted(my_dict)
combinations = it.product(*(my_dict[Name] for Name in allNames))
print(list(combinations))

[('True', 'A', 'X'), ('True', 'A', 'Y'), ('True', 'A', 'Z'), ('True', 'B', 'X'), ('True', 'B', 'Y'), ('True', 'B',
'Z'), ('True', 'C', 'X'), ('True', 'C', 'Y'), ('True', 'C', 'Z'), ('False', 'A', 'X'), ('False', 'A', 'Y'), ('False', 'A', 'Z'), ('False', 'B', 'X'), ('False', 'B', 'Y'), ('False', 'B', 'Z'), ('False', 'C', 'X'), ('False', 'C', 'Y'), ('False', 'C', 'Z')]

Nie wiem,
@SuperStefan:

>>> import itertools
>>>
>>> k1 = [True, False]
>>> k2 = 'ABC'
>>> k3 = 'XYZ'
>>> key_names = ['key1', 'key2', 'key3']
>>>
>>> [dict(zip(key_names, v)) for v in itertools.product(k1, k2, k3)]
[{'key1': True, 'key2': 'A', 'key3': 'X'}, {'key1': True, 'key2': 'A', 'key3': 'Y'}, {'key1': True, 'key2': 'A', 'key3': 'Z'}, {'key1': True, 'key2': 'B', 'key3': 'X'}, {'key1': True, 'key2': 'B', 'key3': 'Y'}, {'key1': True, 'key2': 'B', 'key3': 'Z'}, {'key1':