在Python中对字典进行排序
可能重复的问题:
Python:按值对字典进行排序
我需要把一个原始字典按值进行降序排序。
字典的键是一些数字,而值是一些日期和时间(字符串)。
这意味着我有:
{1: '2011-09-25 16:28:18', 2: '2011-09-25 16:28:19', 3: '2011-09-25 16:28:13', 4: '2011-09-25 16:28:25'}
我想要得到的是:
{4: '2011-09-25 16:28:25', 2: '2011-09-25 16:28:19', 1: '2011-09-25 16:28:18', 3: '2011-09-25 16:28:13'}
请注意这些时间(值)。我想把时间按降序排序,也就是说,最新的时间排在最前面。
谢谢大家!
2 个回答
2
Python内置的dict
字典是没有顺序的,所以你不能这样做,你需要使用其他的容器。
如果你使用的是Python 3.1或2.7,可以使用collections.OrderedDict。如果你用的是更早的版本,可以参考这个链接。
3
import operator
x = { 1: '2011-09-25 16:28:18',
2: '2011-09-25 16:28:19',
3: '2011-09-25 16:28:13',
4: '2011-09-25 16:28:25',
}
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True)
print(sorted_x)
[(4, '2011-09-25 16:28:25'),
(2, '2011-09-25 16:28:19'),
(1, '2011-09-25 16:28:18'),
(3, '2011-09-25 16:28:13')]
这会生成一个包含(键,值)对的列表: