39

次のように、日付文字列 (mm-yyyy) の任意のリストがあります。

d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007'...]

このリストを最初に年のレベル (昇順) で並べ替え、次に月のレベル (昇順) で並べ替える必要があります。論理的な順序は次のようになります。

d_ordered = ['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013' ...]

どうすればこれを達成できますか?

4

2 に答える 2

11

sorted()キーで使用:

>>> d = ['09-2012', '04-2007', '11-2012', '05-2013', '12-2006', '05-2006', '08-2007']
>>> def sorting(L):
...     splitup = L.split('-')
...     return splitup[1], splitup[0]
... 
>>> sorted(d, key=sorting)
['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013']

ここでラムダの代わりに関数を使用して、split()2 回の呼び出しを防ぐことをお勧めします (そして、少しきれいに見えます:))

これはソートされたリストを返すことに注意してください。その場で並べ替えたい場合は、次を使用します.sort()

>>> d.sort(key=sorting)
>>> d
['05-2006', '12-2006', '04-2007', '08-2007', '09-2012', '11-2012', '05-2013']
于 2013-07-13T06:14:42.753 に答える