Dictionary : items()

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Thu Jan 22 09:35:37 CET 2009

On Wed, 21 Jan 2009 23:02:11 -0800, koranthala wrote:

> Hi,
>    Dictionary has the items method which returns the value as a list
> of tuples.
>    I was wondering whether it would be a good idea to have an extra
> parameter - sort - to allow the tuples to be sorted as the desire of
> users.
>    Currently what I do is:
> class SDict(dict):
>     def items(self, sort=None):
>         '''Returns list. Difference from basic dict in that it is
> sortable'''
>         if not sort:
>             return super(SDict, self).items()
>         return sorted(self.iteritems(), key=sort)
> Usage:
> for a dictionary of strings sorted:
>         l = abcd.items(sort=lambda x:(x[1].lower(), x[0]))

That is better written as:

l = sorted(abcd.items(), key=lambda x:(x[1].lower(), x[0]))

where abcd is *any* kind of mapping with an items() method. It could be a 
dict, a defaultdict, ordereddict, binarytree, or anything else the caller 

> Now what I wanted was to incorporate this in the basic dictionary
> itself. Not only items(), but the methods similar to it - iteritems etc
> all can also have this parameter.
> Please let me know your views.
> Is this a good enough idea to be added to the next version of Python?



More information about the Python-list mailing list