Wayne, I appreciate your patience with me. I still can't get this to work:
from operator import itemgetter class testwords: def __init__(self): self.lettercount={} self.inword=False self.mainword="" self.cmpword="" def countletters(word): lc.lettercount = {} for letter in word: lc.lettercount[letter] =lc.lettercount.get(letter,0) + 1 print sorted(lc.lettercount.iteritems(), key=itemgetter(1)) def comparewords(cmpword, mainword): for letter in cmpword: if mainword.get(letter): print letter, cmpword[letter], mainword[letter] if cmpword[letter] >mainword[letter]: lc.inword=False else: if cmpword[letter] <=mainword[letter]: lc.inword=True lc=testwords() lc.mainword="batty" lc.cmpword="bat" countletters(lc.mainword) mainword = lc.lettercount countletters(lc.cmpword) cmpword = lc.lettercount comparewords(cmpword, mainword) if lc.inword==True: print lc.cmpword + " IS in: " + lc.mainword if lc.inword==False: print lc.cmpword + " IS NOT in: " + lc.mainword This is confusing me: lc.mainword="batty" lc.cmpword="bat" [('a', 1), ('y', 1), ('b', 1), ('t', 2)] [('a', 1), ('b', 1), ('t', 1)] a 1 1 b 1 1 t 1 2 bat IS in: batty lc.mainword="batty" lc.cmpword="byyt" [('a', 1), ('y', 1), ('b', 1), ('t', 2)] [('b', 1), ('t', 1), ('y', 2)] y 2 1 b 1 1 t 1 2 byyt IS in: batty if I put : if cmpword[letter] <=mainword[letter]: lc.inword=True on the same level as the else statement: lc.mainword="batty" lc.cmpword="bat" [('a', 1), ('y', 1), ('b', 1), ('t', 2)] [('a', 1), ('b', 1), ('t', 1)] a 1 1 b 1 1 t 1 2 bat IS Not in: batty Neither is: byyt Isn't what comes after the else statment to catch if a letter is in the cmpword that is not in the mainword? lc.mainword="batty" lc.cmpword="bst" KeyError: 's' Wayne-68 wrote: > > On Mon, Aug 24, 2009 at 8:58 PM, kreglet <kreg...@gmail.com> wrote: > >> >> Wayne, >> >> > def myfunc(cmpword, mainword): >> > for letter in cmpword: >> > if mainword.gets(letter): >> > if cmpword[letter] >mainword[letter]: >> > return False >> > else: >> > return False >> >> I tried your function and couldn't get it to work. It threw an error in >> the >> line "if mainword.gets(letter):" saying that "gets" was not an attribute >> of >> dictionary. I tried it with "if mainword.get(letter):" -- no s but that >> would't work either. > > > sorry, 'get' is what I meant. You also need to add "return True" on the > same > level as the else. > > In [5]: word1 = {'d':1, 'o':1, 'g':1} > > In [6]: word2 = {'g':1, 'o':1} > > In [7]: in_word(word2, word1) > Out[7]: True > > In [24]: word2 = {'b':1, 'a':1, 'r':1} > > In [25]: in_word(word2, word1) > Out[25]: False > > HTH, > Wayne > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > -- View this message in context: http://www.nabble.com/Algorithm-tp25107922p25140474.html Sent from the Python - tutor mailing list archive at Nabble.com. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor