Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
PHP to Python
#11
if using python 3.7+ you can use order-preserving feature of dicts. Before 3.6 dicts were unordered. In 3.6. order was preserved as implementation feature (should not be relied upon)
import itertools as it

# assume using python 3.7+
my_dict = {'item1':['A', 'B'], 'item2':['C', 'D'], 'item3':['E','F']}
combinations = it.product(*my_dict.values())
for i, item in enumerate(combinations):
    print(f'array {i}:')
    for key, value in zip(my_dict.keys(), item):
        print(f'\t{key} ==> {value}')
alternative approach would be to transform your dict
import itertools as it

# assume using python 3.7+
my_dict = {'item1':['A', 'B'], 'item2':['C', 'D'], 'item3':['E','F']}
my_list = [[(key, value2) for value2 in value] for key, value in my_dict.items()]
combinations = it.product(*my_list)
for i, item in enumerate(combinations):
    print(f'array {i}:')
    for key, value in item:
        print(f'\t{key} ==> {value}')
in both cases output is
Output:
array 0: item1 ==> A item2 ==> C item3 ==> E array 1: item1 ==> A item2 ==> C item3 ==> F array 2: item1 ==> A item2 ==> D item3 ==> E array 3: item1 ==> A item2 ==> D item3 ==> F array 4: item1 ==> B item2 ==> C item3 ==> E array 5: item1 ==> B item2 ==> C item3 ==> F array 6: item1 ==> B item2 ==> D item3 ==> E array 7: item1 ==> B item2 ==> D item3 ==> F
This is just basic example, build upon it to get output in desired format
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#12
This is great! Thank you very much!
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020