Marc 'BlackJack' Rintsch wrote:
def make_anagram_map(words):
anagram_map = dict()
for word in imap(lambda w: w.strip().lower(), words):
sorted_word = ''.join(sorted(list(word)))
anagram_map.setdefault(sorted_word, list()).append(word)
return dict(ifilter(lambda x: len(x[1]) > 1, anagram_map.iteritems()))

Or if you're afraid of map and filter like me, you can try:

def make_anagram_map(words):
    anagram_map = {}
    for word in (w.strip().lower() for w in words):
        anagram_map.setdefault(''.join(sorted(word)), []).append(word)
    return dict(sortedword_wordlist
                for sortedword_wordlist in anagram_map.iteritems()
                if len(sortedword_wordlist[1]) > 1)


py> make_anagram_map(['owers', 'pest', 'rowse', 'pets', 'sower', 'step']) {'epst': ['pest', 'pets', 'step'], 'eorsw': ['owers', 'rowse', 'sower']}

STeVe
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to