2

I have a dictionary that looks like this:

Test = {"list_0" : ["a","b","c"],
        "list_1" : ["e","f","g"],
        "list_2" : ["h","i","e"],
        "list_3" : ["f","g","h"],
        "list_4" : ["i","l","m"]}

for list_n, Letter  in Test.items():
#   print (Letter) 
    print (list_n) 
    for s in Letter:
        print (s)

I would like to change the order in which the items are chosen:

example 1: list_0, 1, 3, 4 example 2: List_1, 2, 3 ,0 ... Until all possible combinations have been completed.

I've tried doing this but I'm not sure I'm going the right way.

  • Dictionaries are unordered, so you may want to investigate using a different data structure to store a copy of the keys. This question may help with generating your permutations: https://stackoverflow.com/questions/104420/how-to-generate-all-permutations-of-a-list – Miguel Guthridge Mar 02 '22 at 12:36
  • 3
    @MiguelGuthridge That's not true in recent versions of Python, and earlier ones had an OrderedDict anyway. – matszwecja Mar 02 '22 at 12:37
  • Does this answer your question? [How to generate all permutations of a list?](https://stackoverflow.com/questions/104420/how-to-generate-all-permutations-of-a-list) – matszwecja Mar 02 '22 at 12:39
  • @matszwecja while that's true, they're not using an OrderedDict - maybe that's a good data structure for them to consider using – Miguel Guthridge Mar 03 '22 at 10:42
  • 2
    @MiguelGuthridge since Python 3.7 standard 'dict' objects in Python are insertion ordered, there is no need to use OrderedDict if they are using this version or above to achieve the same functionality – matszwecja Mar 03 '22 at 11:10
  • 1
    and since cpython 3.6 dicts have been ordered – acushner Mar 15 '22 at 15:00

1 Answers1

0

I think I have the answer to your question:

import itertools

Test = {"list_0": ["a", "b", "c"],
        "list_1": ["e", "f", "g"],
        "list_2": ["h", "i", "e"],
        "list_3": ["f", "g", "h"],
        "list_4": ["i", "l", "m"]}
for L in range(0, len(Test) + 1):
    for comb in itertools.combinations(Test, L):
        combination = list(comb)
        for _list in combination:
            print(_list, Test[_list], sep=": ")
        print("*" * 80)

Output:

********************************************************************************
list_0: ['a', 'b', 'c']
********************************************************************************
list_1: ['e', 'f', 'g']
********************************************************************************
list_2: ['h', 'i', 'e']
********************************************************************************
list_3: ['f', 'g', 'h']
********************************************************************************
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
********************************************************************************
list_0: ['a', 'b', 'c']
list_2: ['h', 'i', 'e']
********************************************************************************
list_0: ['a', 'b', 'c']
list_3: ['f', 'g', 'h']
********************************************************************************
list_0: ['a', 'b', 'c']
list_4: ['i', 'l', 'm']
********************************************************************************
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
********************************************************************************
list_1: ['e', 'f', 'g']
list_3: ['f', 'g', 'h']
********************************************************************************
list_1: ['e', 'f', 'g']
list_4: ['i', 'l', 'm']
********************************************************************************
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
********************************************************************************
list_2: ['h', 'i', 'e']
list_4: ['i', 'l', 'm']
********************************************************************************
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_3: ['f', 'g', 'h']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
********************************************************************************
list_0: ['a', 'b', 'c']
list_2: ['h', 'i', 'e']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
********************************************************************************
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
list_4: ['i', 'l', 'm']
********************************************************************************
list_1: ['e', 'f', 'g']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************
list_0: ['a', 'b', 'c']
list_1: ['e', 'f', 'g']
list_2: ['h', 'i', 'e']
list_3: ['f', 'g', 'h']
list_4: ['i', 'l', 'm']
********************************************************************************

OR if you're looking for every possible combination of these four lists:

import itertools

Test = {"list_0": ["a", "b", "c"],
        "list_1": ["e", "f", "g"],
        "list_2": ["h", "i", "e"],
        "list_3": ["f", "g", "h"],
        "list_4": ["i", "l", "m"]}
for comb in list(itertools.permutations(Test)):
    print(comb)

Output:

('list_0', 'list_1', 'list_2', 'list_3', 'list_4')
('list_0', 'list_1', 'list_2', 'list_4', 'list_3')
('list_0', 'list_1', 'list_3', 'list_2', 'list_4')
('list_0', 'list_1', 'list_3', 'list_4', 'list_2')
('list_0', 'list_1', 'list_4', 'list_2', 'list_3')
('list_0', 'list_1', 'list_4', 'list_3', 'list_2')
('list_0', 'list_2', 'list_1', 'list_3', 'list_4')
('list_0', 'list_2', 'list_1', 'list_4', 'list_3')
('list_0', 'list_2', 'list_3', 'list_1', 'list_4')
('list_0', 'list_2', 'list_3', 'list_4', 'list_1')
('list_0', 'list_2', 'list_4', 'list_1', 'list_3')
('list_0', 'list_2', 'list_4', 'list_3', 'list_1')
('list_0', 'list_3', 'list_1', 'list_2', 'list_4')
('list_0', 'list_3', 'list_1', 'list_4', 'list_2')
('list_0', 'list_3', 'list_2', 'list_1', 'list_4')
('list_0', 'list_3', 'list_2', 'list_4', 'list_1')
('list_0', 'list_3', 'list_4', 'list_1', 'list_2')
('list_0', 'list_3', 'list_4', 'list_2', 'list_1')
('list_0', 'list_4', 'list_1', 'list_2', 'list_3')
('list_0', 'list_4', 'list_1', 'list_3', 'list_2')
('list_0', 'list_4', 'list_2', 'list_1', 'list_3')
('list_0', 'list_4', 'list_2', 'list_3', 'list_1')
('list_0', 'list_4', 'list_3', 'list_1', 'list_2')
('list_0', 'list_4', 'list_3', 'list_2', 'list_1')
('list_1', 'list_0', 'list_2', 'list_3', 'list_4')
('list_1', 'list_0', 'list_2', 'list_4', 'list_3')
('list_1', 'list_0', 'list_3', 'list_2', 'list_4')
('list_1', 'list_0', 'list_3', 'list_4', 'list_2')
('list_1', 'list_0', 'list_4', 'list_2', 'list_3')
('list_1', 'list_0', 'list_4', 'list_3', 'list_2')
('list_1', 'list_2', 'list_0', 'list_3', 'list_4')
('list_1', 'list_2', 'list_0', 'list_4', 'list_3')
('list_1', 'list_2', 'list_3', 'list_0', 'list_4')
('list_1', 'list_2', 'list_3', 'list_4', 'list_0')
('list_1', 'list_2', 'list_4', 'list_0', 'list_3')
('list_1', 'list_2', 'list_4', 'list_3', 'list_0')
('list_1', 'list_3', 'list_0', 'list_2', 'list_4')
('list_1', 'list_3', 'list_0', 'list_4', 'list_2')
('list_1', 'list_3', 'list_2', 'list_0', 'list_4')
('list_1', 'list_3', 'list_2', 'list_4', 'list_0')
('list_1', 'list_3', 'list_4', 'list_0', 'list_2')
('list_1', 'list_3', 'list_4', 'list_2', 'list_0')
('list_1', 'list_4', 'list_0', 'list_2', 'list_3')
('list_1', 'list_4', 'list_0', 'list_3', 'list_2')
('list_1', 'list_4', 'list_2', 'list_0', 'list_3')
('list_1', 'list_4', 'list_2', 'list_3', 'list_0')
('list_1', 'list_4', 'list_3', 'list_0', 'list_2')
('list_1', 'list_4', 'list_3', 'list_2', 'list_0')
('list_2', 'list_0', 'list_1', 'list_3', 'list_4')
('list_2', 'list_0', 'list_1', 'list_4', 'list_3')
('list_2', 'list_0', 'list_3', 'list_1', 'list_4')
('list_2', 'list_0', 'list_3', 'list_4', 'list_1')
('list_2', 'list_0', 'list_4', 'list_1', 'list_3')
('list_2', 'list_0', 'list_4', 'list_3', 'list_1')
('list_2', 'list_1', 'list_0', 'list_3', 'list_4')
('list_2', 'list_1', 'list_0', 'list_4', 'list_3')
('list_2', 'list_1', 'list_3', 'list_0', 'list_4')
('list_2', 'list_1', 'list_3', 'list_4', 'list_0')
('list_2', 'list_1', 'list_4', 'list_0', 'list_3')
('list_2', 'list_1', 'list_4', 'list_3', 'list_0')
('list_2', 'list_3', 'list_0', 'list_1', 'list_4')
('list_2', 'list_3', 'list_0', 'list_4', 'list_1')
('list_2', 'list_3', 'list_1', 'list_0', 'list_4')
('list_2', 'list_3', 'list_1', 'list_4', 'list_0')
('list_2', 'list_3', 'list_4', 'list_0', 'list_1')
('list_2', 'list_3', 'list_4', 'list_1', 'list_0')
('list_2', 'list_4', 'list_0', 'list_1', 'list_3')
('list_2', 'list_4', 'list_0', 'list_3', 'list_1')
('list_2', 'list_4', 'list_1', 'list_0', 'list_3')
('list_2', 'list_4', 'list_1', 'list_3', 'list_0')
('list_2', 'list_4', 'list_3', 'list_0', 'list_1')
('list_2', 'list_4', 'list_3', 'list_1', 'list_0')
('list_3', 'list_0', 'list_1', 'list_2', 'list_4')
('list_3', 'list_0', 'list_1', 'list_4', 'list_2')
('list_3', 'list_0', 'list_2', 'list_1', 'list_4')
('list_3', 'list_0', 'list_2', 'list_4', 'list_1')
('list_3', 'list_0', 'list_4', 'list_1', 'list_2')
('list_3', 'list_0', 'list_4', 'list_2', 'list_1')
('list_3', 'list_1', 'list_0', 'list_2', 'list_4')
('list_3', 'list_1', 'list_0', 'list_4', 'list_2')
('list_3', 'list_1', 'list_2', 'list_0', 'list_4')
('list_3', 'list_1', 'list_2', 'list_4', 'list_0')
('list_3', 'list_1', 'list_4', 'list_0', 'list_2')
('list_3', 'list_1', 'list_4', 'list_2', 'list_0')
('list_3', 'list_2', 'list_0', 'list_1', 'list_4')
('list_3', 'list_2', 'list_0', 'list_4', 'list_1')
('list_3', 'list_2', 'list_1', 'list_0', 'list_4')
('list_3', 'list_2', 'list_1', 'list_4', 'list_0')
('list_3', 'list_2', 'list_4', 'list_0', 'list_1')
('list_3', 'list_2', 'list_4', 'list_1', 'list_0')
('list_3', 'list_4', 'list_0', 'list_1', 'list_2')
('list_3', 'list_4', 'list_0', 'list_2', 'list_1')
('list_3', 'list_4', 'list_1', 'list_0', 'list_2')
('list_3', 'list_4', 'list_1', 'list_2', 'list_0')
('list_3', 'list_4', 'list_2', 'list_0', 'list_1')
('list_3', 'list_4', 'list_2', 'list_1', 'list_0')
('list_4', 'list_0', 'list_1', 'list_2', 'list_3')
('list_4', 'list_0', 'list_1', 'list_3', 'list_2')
('list_4', 'list_0', 'list_2', 'list_1', 'list_3')
('list_4', 'list_0', 'list_2', 'list_3', 'list_1')
('list_4', 'list_0', 'list_3', 'list_1', 'list_2')
('list_4', 'list_0', 'list_3', 'list_2', 'list_1')
('list_4', 'list_1', 'list_0', 'list_2', 'list_3')
('list_4', 'list_1', 'list_0', 'list_3', 'list_2')
('list_4', 'list_1', 'list_2', 'list_0', 'list_3')
('list_4', 'list_1', 'list_2', 'list_3', 'list_0')
('list_4', 'list_1', 'list_3', 'list_0', 'list_2')
('list_4', 'list_1', 'list_3', 'list_2', 'list_0')
('list_4', 'list_2', 'list_0', 'list_1', 'list_3')
('list_4', 'list_2', 'list_0', 'list_3', 'list_1')
('list_4', 'list_2', 'list_1', 'list_0', 'list_3')
('list_4', 'list_2', 'list_1', 'list_3', 'list_0')
('list_4', 'list_2', 'list_3', 'list_0', 'list_1')
('list_4', 'list_2', 'list_3', 'list_1', 'list_0')
('list_4', 'list_3', 'list_0', 'list_1', 'list_2')
('list_4', 'list_3', 'list_0', 'list_2', 'list_1')
('list_4', 'list_3', 'list_1', 'list_0', 'list_2')
('list_4', 'list_3', 'list_1', 'list_2', 'list_0')
('list_4', 'list_3', 'list_2', 'list_0', 'list_1')
('list_4', 'list_3', 'list_2', 'list_1', 'list_0')

Please Tell me if I interpreted your question correctly.

Raed Ali
  • 549
  • 1
  • 6
  • 22