Is Python Smart Enough to do Sorting like this?

shalendra chhabra shalen_itbhu at
Sat Mar 13 05:25:32 CET 2004

Hey Stephen,
Thanks. I got what you said and by mistake I had typed the order in 
Decreasing, which I needed too.

However, right now I see this interesting problem here on this list of "dont 
bother" which seems interesting.

If one has a string and can this string be assigned to a dictionary and then 
we can apply the sorting methods of dictionary on it.
For example: the information in my itemset can be treated as a string.

itemset=str(key[i])+str(value[i]) #done over a loop and and then some how 
can get everything concatenated

If I am not mistaken the itemset is now a string.
How can I assign this itemset back to a dictionary? Is there any way?
If yes! then we can apply the sort methods for increasing order and for 
decreasing order you have given me the function already.

Please clear my doubt


>From: Stephen Horne <steve at>
>To: python-list at
>Subject: Re: Is Python Smart Enough to do Sorting like this?
>Date: Sat, 13 Mar 2004 04:03:30 +0000
>On Sat, 13 Mar 2004 01:26:25 +0000, "shalendra chhabra"
><shalen_itbhu at> wrote:
> >Is it possible to order this itemset in an increasing order of key: value
> >with respect to keys. For example: if
> >key4>key2>key3>key1
> >then the resulting ordering should be in such a way:
> >
> >key4:value4, key2: value2,key3:value3>key1: value1
>What you seem to be describing is decreasing order of key - the
>highest key value (key4) first, with progressively smaller values at
>later positions.
>This is not hard. The only minor annoyance is that, unlike for
>instance a C++ map, Python dictionaries don't naturally iterate in
>sorted order (they use hashing rather than a tree structure, which
>overall is probably neither better nor worse - just different).
>Sorting tasks are quite common, so while that are not exactly
>difficult I imagine there's a good guide on the internet somewhere for
>newbies (links anyone?).
>In this case, once you have the dictionary of key:value pairs you
>extract a list of keys and sort it appropriately. The default sort is
>in increasing order, so you reverse that to get decreasing order.
>Then, if necessary, you use a list comprehension to get a list of
>(key, value) tuples in the needed order. The list comprehension is
>often redundant, though, as you can normally just iterate the sorted
>keys and read the values from the dictionary when they're needed.
>Here is a quick function...
>def pairs_by_decreasing_key (p_Dict) :
>   """
>   Takes a dictionary and derives a list of (key, value) tuples
>   in decreasing order of key.
>   """
>   tmp = p_Dict.keys (); tmp.sort (); tmp.reverse ()
>   return [(i, p_Dict [i]) for i in tmp]
>Steve Horne
>steve at ninereeds dot fsnet dot co dot uk

Xerox Multifunction devices that print,copy,scan and fax. Get affordable printing solutions that 
fit your needs .

More information about the Python-list mailing list