У вас нет проблем, itertools.combinations()
создает уникальные комбинации в любом порядке , точно так, как вы уже хотели.Из документации :
Элементы рассматриваются как уникальные в зависимости от их положения, а не от их стоимости.Поэтому, если входные элементы уникальны, повторных значений в каждой комбинации не будет.
и приведенный пример исходного кода:
# combinations('ABCD', 2) --> AB AC AD BC BD CD
Обратите внимание, что * 1015 нет*, поскольку AB
уже сгенерировано.
Конкретно, для вашего примера:
>>> from itertools import combinations
>>> [''.join(combo) for combo in combinations(['01', '99'], 2)]
['0199']
Производится только '0199'
, '9901'
никогда не будет произведено.
Примечание: вам не нужно звонить dict.keys()
при сортировке ключей.sorted(KEY_DICT)
будет хорошо, так как итерация по словарю также дает ключи.