I am looking for a function that takes an input string and a pattern, and outputs a dictionary.
# @param s str, lowercase letters # @param p str, lowercase and uppercase letters # @return dict def fill(s, p): d = {} .... return d String s has characters from the lowercase letters. String p is a pattern, a string of characters from the lowercase and uppercase letters. The idea is to match s with p, where lowercase letters have to match exactly, and to fill variables (with an uppercase letter name) with the rest of s. The variables are collected in a dictionary with the resulting bindings. A variable that occurs in more than one place in p must bind to the same substring of s. Tests: >>> fill('ab', p='aA') {'A': 'b'} >>> fill('ab', p='Ab') {'A': 'a'} >>> fill('bb', p='Ab') # no match {} >>> fill('aa', p='Aa') {'A': 'a'} >>> fill('aa', p='Ab') # no match {} >>> fill('abb', p='aA') {'A': 'bb'} >>> fill('aba', p='aAa') {'A': 'b'} >>> fill('abb', p='aAa') # no match {} >>> fill('abab', p='aAaA') # A-matches must be equal {'A': 'b'} >>> fill('abac', p='aAaA') # no match {} >>> fill('abac', p='aAaB') {'A': 'b', 'B': 'c'} Can you do it? Is trying a solution with a regex a good idea? -- http://mail.python.org/mailman/listinfo/python-list