在Python中对字典进行排序

2 投票
2 回答
1332 浏览
提问于 2025-04-17 03:02

可能重复的问题:
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')]

这会生成一个包含(键,值)对的列表:

撰写回答