---------- Forwarded message ---------- From: Igor Korot <ikoro...@gmail.com> Date: Sat, Feb 8, 2014 at 12:25 AM Subject: Re: Sorting dictionary by datetime value To: Chris Angelico <ros...@gmail.com>
Chris, On Fri, Feb 7, 2014 at 11:58 PM, Chris Angelico <ros...@gmail.com> wrote: > On Sat, Feb 8, 2014 at 6:53 PM, Igor Korot <ikoro...@gmail.com> wrote: > > Chris, > > > > On Fri, Feb 7, 2014 at 11:09 PM, Chris Angelico <ros...@gmail.com> > wrote: > >> On Sat, Feb 8, 2014 at 6:06 PM, Igor Korot <ikoro...@gmail.com> wrote: > >>>>>> sorted(a.items(), key=a.get) > >>> [('1', datetime.datetime(2012, 12, 28, 12, 15, 30, 100)), ('3', > datetime.datetim > >>> e(2012, 12, 28, 12, 16, 44, 100)), ('2', datetime.datetime(2012, 12, > 28, 12, 17, > >>> 29, 100))] > >>>>>> > >>> > >>> However, trying to do the same thing from the script does not sort the > >>> dictionary: > >>> > >>> sorted(my_dict.items(), key=my_dict.get, reverse=False) > >>> for key, value in my_dict.items(): > >>> print value, key > >>> > >>> the dictionary prints with unsorted items. > >> > >> The sorted() function returns a sorted list. You're then going back to > >> the original dictionary. Instead, just iterate over the sorted items: > >> > >> items = sorted(my_dict.items(), key=my_dict.get, reverse=False) > >> for key, value in items: > >> print value, key > > > > Still does not work. It prints: > > > > ======= > > DATE TIME - EVENT > > 058f63666438&0 - Instance ID > > Original values > > 2013-11-15 15:42:27.000499 User Datetime > > 2013-07-14 16:42:18.000637 Property Keys > > 2013-11-15 15:42:17.000938 Volume Device > > 2013-07-14 16:42:22.000276 Last Modify Reg Times 1 > > Sorted values > > 2013-11-15 15:42:27.000499 User Datetime > > 2013-07-14 16:42:18.000637 Property Keys > > 2013-11-15 15:42:17.000938 Volume Device > > 2013-07-14 16:42:22.000276 Last Modify Reg Times 1 > > > > Code is as follows: > > > > sorted_items = sorted(my_dict.items(), key=my_dict.get, reverse=False) > > print row[19], " - Instance ID" > > print "Original values" > > for key, value in my_dict.items(): > > print value, key > > print "Sorted values" > > for key, value in sorted_items: > > print value, key > > > > Thank you. > > Assuming you sent that privately only by mistake - hope you don't mind > me responding on-list. > > The problem here is actually your key function. my_dict.items() > returns a series of two-item tuples, none of which exists in your > dictionary; so you're actually sorting [None, None, None], which isn't > very useful. > > Try this: > > sorted_items = sorted(my_dict.keys(), key=my_dict.get) > for key in sorted_items: > print my_dict[key], key > This code fail. sorted_item is a list of tuples. And so iterating the list in the for loop I will get a tuple. It probably should be: for key[1] in sorted_items: Let me try that. Thank you. > > Note that reverse=False is the default, so you don't need to specify that. > > ChrisA > -- > https://mail.python.org/mailman/listinfo/python-list >
-- https://mail.python.org/mailman/listinfo/python-list