[EMAIL PROTECTED] wrote:
> I am trying to write a basic anagram system, that takes a text file
> line by line and by sorting the string into its alphabetical form
> compares it to keys within a dictionary.
> 
> If it matches a key I want to add it (in its unordered form) to a list
> for that key.
> 
> So far this is what I have
> 
> import sys, string, fileinput
> 
> # takes an item (string) and converts it to its basic alphabetical
> form
> def getChar( item ):
>       item_chars = []
>       for i in range(len(item)):
>               item_chars.append(item[i])
>       item_chars.sort()
>       return string.join(item_chars, "")
> 
> anagramDict = {}
> 
> for line in fileinput.input("fakelist.txt"):
>       myLine = line.replace("\n", "") #remove the carriage returns
>       myString = getChar(myLine) #get the alphabetical form
>       for k in anagramDict.items(): #iterator through the keys in the
> dictionary
>               if k[0] == myString: #if the key matches our string
>                       anagramDict[k].append([myLine])#append that k and add 
> the value
> this line
>       else:
>               anagramDict[myString] = [myLine] #else there is no key the same 
> so
> make a new one
> 
> print anagramDict
> 

A few suggestions.

Use string methods, rather than the string module.
Replace getChar with a simple one-liner (check out the builtin 'sorted'
function).
Consider whether it's really necessary to iterate over all the
dictionary keys.
Check out the setdefault method of dictionaries.

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

Reply via email to