Skip to content

Instantly share code, notes, and snippets.

@jgeewax
Created June 18, 2011 21:41
Show Gist options
  • Save jgeewax/1033532 to your computer and use it in GitHub Desktop.
Save jgeewax/1033532 to your computer and use it in GitHub Desktop.
Anagram data structure
from collections import defaultdict
words = ['eat', 'tea', 'ate', 'time'] # ... get words from somewhere else
data = defaultdict(set)
for word in words:
data[''.join(sorted(word))].add(word)
def get_anagrams_for(word):
words = data[''.join(sorted(word))]
words.remove(word)
return list(words)
if __name__ == '__main__':
print get_anagrams_for('tea') # prints ['ate', 'eat']
@robert-king
Copy link

mines not as good - but still fun.

from itertools import groupby
words = ['eat', 'tea', 'ate', 'time']
words.sort(key=sorted)
for sorted_, words in groupby(words, key=sorted):
... print list(words)
...
['eat', 'tea', 'ate']
['time']

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment