anagram finder / dict mapping question
dave
squareswallower at 1ya2hoo3.net
Thu May 8 01:42:07 EDT 2008
This is what i've came up with. My problem is that I can't get them to
properly evaluate.. when comparewords() runs it finds itself...
Should I have the keys of mapdict iterate over itself? Is that
possible?
def annafind():
fin = open('text.txt') # file has one word per line
mapdic = {} # each word gets sorted & goes in here
for line in fin:
rawword = line.strip()
word = list(rawword)
word.sort()
mapdic[''.join(word)] = 0
return mapdic
def comparewords(): ***not working as intended
fin = open('text.txt')
for line in fin:
line = line.strip()
word = list(line)
word.sort()
sortedword = (''.join(word))
if sortedword in mapdic:
print line
On 2008-05-07 19:25:53 -0600, "Kam-Hung Soh" <kamhung.soh at gmail.com> said:
> On Thu, 08 May 2008 11:02:12 +1000, dave <squareswallower at 1ya2hoo3.net>
> wrote:
>
>> Hi All,
>>
>> I wrote a program that takes a string sequence and finds all the words
>
>> inside a text file (one word per line) and prints them:
>>
>> def anagfind(letters): #find anagrams of these letters
>> fin = open('text.txt') #one word per line file
>> wordbox = [] #this is where the words will go
>> for line in fin:
>> word = line.strip()
>> count = 0
>> for char in letters:
>> if char not in word:
>> break
>> else:
>> count += 1
>> if count == len(word):
>> wordbox.append(word)
>> return wordbox
>>
>> Now I'd like to modify the code to naturally find all anagrams inside
> a
>> wordlist. What would be the best way to do this? Using Hints? Is it
>
>> possible to iterate over dict keys? How can I make a dict that maps
>
>> from a set of letters to a list of words that are spelled from those
>
>> letters? Wouldn't I need to make the set of letters a key in a dict?
>>
>> As always - Thanks for helping someone trying to learn...
>>
>> Dave
>>
>
> Suggestion: for each word, sort their characters and use them as the
> dictionary key. If two words have the same combination of characters,
> then they are anagrams. For example: "edam" and "made" are anagrams
> because they have the letters 'a', 'd', 'e' and 'm'.
>
> Refer "Programming Pearls" by Jon Bentley.
>
> --
> Kam-Hung Soh <a href="http://kamhungsoh.com/blog">Software Salariman</ a>
More information about the Python-list
mailing list