anagram finder / dict mapping question

Arnaud Delobelle arnodel at googlemail.com
Sat May 10 04:06:17 EDT 2008


"Kam-Hung Soh" <kamhung.soh at gmail.com> writes:

> On Sat, 10 May 2008 07:19:38 +1000, <umpsumps at gmail.com> 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??
>>
>
> Built-in max() function only returns one result.
>
> My solution is to make a sorted list and return last three items:
>
> sorted((len(anagrams[key]), key) for key in anagrams.keys())[-3:]

Using the key= parameter of sorted() beats explicit DSU:

sorted(anagrams.itervalues(), key=len)[-3:]

Or even

sorted(anagrams.itervalues(), key=len, reverse=True)[:3]

-- 
Arnaud



More information about the Python-list mailing list