BLOG
Enjoy when you can, and endure when you must.
MAY 23, 2013/Python
Python字典的排序方法一则

今天需要对Python的字典进行排序,以获得有效的时间序列,采用了如下方法:

首先生成一个示例字典:

>>> range_a = random.sample(range(0, 10), 10)
>>> range_b = random.sample(range(10, 20), 10)
>>> range_a
[9, 1, 7, 6, 5, 0, 2, 3, 4, 8]
>>> range_b
[11, 13, 10, 19, 18, 15, 12, 17, 14, 16]
>>> d = dict(zip(range_a, range_b))
>>> d
{0: 15, 1: 13, 2: 12, 3: 17, 4: 14, 5: 18, 6: 19, 7: 10, 8: 16, 9: 11}

现在我们需要对其键进行从大到小的排序,可以这么做:

>>> sorted(d.iteritems(), key=itemgetter(0), reverse=True)
[(9, 11), (8, 16), (7, 10), (6, 19), (5, 18), (4, 14), (3, 17), (2, 12), (1, 13), (0, 15)]

字典的iteritems()方法返回一个键/值对的可迭代对象,然后用sorted方法对其排序即可达到效果。其中还用到了itemgetter()方法。以上的itemgetter(0)可以看作是获取字典的键(实际是iteritems()转换之后的值)。

COMMENTS
LEAVE COMMNT