用字典键替换字符串中的占位符

dom*_*nik 0 python permutation

让我们假设我有:

  • 占位符字符串 "aabbaaa"
  • 和一本字典:{'A': 'a', 'B': 'a', 'C': 'b', 'D': 'a', 'E': 'b', 'F': 'a', 'G': 'b'}.

如何在 python 中从占位符字符串的字典键中创建所有可能的排列?

例如,预期的结果是:

AACCAAA, AACCAAB, AACCABA, ... AACEAA, AACEAA, AAEEAA...FFGGFFF

Ana*_*Sai 5

解决方案可能是:

    >>> import itertools
    >>> from collections import defaultdict
    >>> dict_ = defaultdict(list)
    >>> input = "ab"
    >>> _dict = {'A': 'a', 'B': 'a', 'C': 'b', 'D': 'a', 'E': 'b', 'F': 'a', 'G': 'b'}
    >>> for k,v in _dict.items():
    ...     dict_[v].append(k)
    ... 
    >>> _iterables = [dict_[character] for character in input]
    >>> output = [''.join(tup) for tup in itertools.product(*_iterables)]
    set(['BE', 'AC', 'BG', 'AE', 'AG', 'BC', 'DG', 'DE', 'DC', 'FC', 'FE', 'FG'])
Run Code Online (Sandbox Code Playgroud)

让我知道它是否有帮助!!