dictionary issue (and maybe PEP ... depending on the answer)

Dave Harrison dave at nullcube.com
Mon Jun 2 02:06:39 EDT 2003


My quick - ignorant - question is :

Why dont we get :

1, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9

dsavitsk (dsavitsk at ecpsoftware.com):
> (Python 2.2.1 on FreeBSD 4.7 being used via mod_python 3)
> 
> I have a dictionary at the top of a module that looks like this
> 
> _months = {1: 'January',
> 	   2: 'February',
> 	   3: 'March',
> 	   4: 'April',
> 	   5: 'May',
> 	   6: 'June',
> 	   7: 'July',
> 	   8: 'August',
> 	   9: 'September',
> 	   10: 'October',
> 	   11: 'November',
> 	   12: 'December'}
> 
> never mind, for now, that there are proably better ways to do what the 
> dict obviously does.  anyhow, I get a list of the months by doing this
> 
> >>> [_months[i] for i in _months.keys()]
> 
> The issue is, this consistently returns the months in order. I don't see 
> any obvious reason that it does, but I can't get it to fail. So,I am 
> wondering if there is a reason, or is it serendipity.
> 
> Assuming that there is not a good reason, the PEP idea is adding a 
> sorted_keys() method to dictionaries which would just return the keys in 
> the same order they would be in by doing this.
> 
> >>> l = d.keys()
> >>> l.sort()
> 
> The advantage is that using dictionary keys in list comprehensions would 
> be easier, but other than that it is not too big a deal.
> 
> Thanks,
> 
> Doug
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list





More information about the Python-list mailing list