George Sakkis wrote: > On Oct 17, 10:06 am, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote: >> Diez B. Roggisch wrote: >> > Abandoned wrote: >> >> >> Hi.. >> >> I have a dictionary like these: >> >> a={'a': '1000', 'b': '18000', 'c':'40', 'd': '600'} ...... 100.000 >> >> element >> >> I want to sort this by value and i want to first 100 element.. >> >> Result must be: >> >> [b, a, d, c .....] ( first 100 element) >> >> >> I done this using FOR and ITERATOR but it tooks 1 second and this is >> >> very big time to my project. >> >> I want to learn the fastest method.. >> >> > That is the fastest method, unless you write your own ordered dict >> > implementation that sorts by value. But that will most probably lose >> > the time when holding up the invariant when inserting key/values into >> > the dictionary. >> >> Actually, I somehow read the FOR and ITERATOR above as something like >> this: >> >> entries = sorted(a.items(), key=lambda v: v[1])[:100] >> >> The gist of my statement above is nontheless the same: if you want sorted >> results, you need to sort... >> >> Diez > > If you want the top 100 out of 100K, heapq.nlargest is more than an > order of magnitude faster.
Oh, cool. Didn't know about that. I'm a bit rusty on how heapsort works, gotta check that out. diez -- http://mail.python.org/mailman/listinfo/python-list