On 2008-05-09 18:53:19 -0600, George Sakkis <[EMAIL PROTECTED]> said:

On May 9, 5:19 pm, [EMAIL PROTECTED] wrote:
What would be the best method to print the top results, the one's that

had the highest amount of anagrams??  Create a new histogram dict?

You can use the max() function to find the biggest list of anagrams:

top_results = max(anagrams.itervalues(), key=len)

--
Arnaud

That is the biggest list of anagrams, what if I wanted the 3 biggest
lists?  Is there a way to specific top three w/ a max command??

import heapq
help(heapq.nlargest)
Help on function nlargest in module heapq:

nlargest(n, iterable, key=None)
    Find the n largest elements in a dataset.

    Equivalent to:  sorted(iterable, key=key, reverse=True)[:n]


HTH,
George

I both the 'nlargest' and the 'sorted' methods.. I could only get the sorted to work.. however it would only return values like (3, edam) not the list of words..

Here is what I have now.. Am I over-analyzing this? It doesn't seem like it should be this hard to get the program to print the largest set of anagrams first...


def anafind():
        fin = open('text.txt')
        mapdic = {}
        finalres = []                   # top answers go here
        for line in fin:
                line = line.strip()
                alphaword = ''.join(sorted(line))       #sorted word as key
                if alphaword not in mapdic:
                        mapdic[alphaword] = [line]
                else:
                        mapdic[alphaword].append(line)
topans = sorted((len(mapdic[key]), key) for key in mapdic.keys())[-3:] #top 3 answers
        for key, value in topans:       #
                finalres.append(mapdic[value])
        print finalres

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

Reply via email to