Pythonリストの降順での並べ替え


334

このリストを降順に並べ替えるにはどうすればよいですか?

timestamp = [
    "2010-04-20 10:07:30",
    "2010-04-20 10:07:38",
    "2010-04-20 10:07:52",
    "2010-04-20 10:08:22",
    "2010-04-20 10:08:22",
    "2010-04-20 10:09:46",
    "2010-04-20 10:10:37",
    "2010-04-20 10:10:58",
    "2010-04-20 10:11:50",
    "2010-04-20 10:12:13",
    "2010-04-20 10:12:13",
    "2010-04-20 10:25:38"
]

回答:


386

1行で、lambda

timestamp.sort(key=lambda x: time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6], reverse=True)

に関数を渡すlist.sort

def foo(x):
    return time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6]

timestamp.sort(key=foo, reverse=True)

13
時間タプルへの変換は不要です。
Marcelo Cantos、2010年

2
@Marcelo:偶然のみ。
Ignacio Vazquez-Abrams

16
@ IgnacioVazquez-Abramsいいえ、偶然ではありません。ISO 8601は、アルファベット順が年代順と一致するように明示的に設計されています。
jwg

@jwg(それは偶然、設計によって明確だではない)感情に同意しますが、与えられたフォーマットは、ISO 8601に準拠していない
マルセロ・カントス

2
@jwg日付と時刻のコンポーネントの間にスペースがあります。
Marcelo Cantos、2015

381

これにより、配列のバージョンが並べ替えられます。

sorted(timestamp, reverse=True)

インプレースでソートする場合:

timestamp.sort(reverse=True)

2
reverse2.4で追加されました。ただしsort()、これは安定しているため、指定された2ビットのコードが必ずしも同じ結果になるとは限りません。
Ignacio Vazquez-Abrams

3
@Rajeev-日付がこのように記述されている場合にのみ日付をソートできることを忘れないでください(YYYY-MM-DD HH:MM:SS)。アルファベット順は年代順と同じです。'DD.MM.YYYY'は良い例ですsort(reverse=True)
eumiro 2010年

print( "List before sort"); print(myList); myList.sort(reverse = True); print( "sortedList:" + str(myList));
エルム2017

@Erumは回答であり、コメントではありません。回答として、それは冗長です。
Marcelo Cantos 2017

56

あなたは単にこれを行うことができます:

timestamp.sort(reverse=True)

10

リストは既に昇順なので、リストを逆にするだけです。

>>> timestamp.reverse()
>>> timestamp
['2010-04-20 10:25:38', 
'2010-04-20 10:12:13', 
'2010-04-20 10:12:13', 
'2010-04-20 10:11:50', 
'2010-04-20 10:10:58', 
'2010-04-20 10:10:37', 
'2010-04-20 10:09:46', 
'2010-04-20 10:08:22',
'2010-04-20 10:08:22', 
'2010-04-20 10:07:52', 
'2010-04-20 10:07:38', 
'2010-04-20 10:07:30']

9

あなたは単純なタイプ:

timestamp.sort()
timestamp=timestamp[::-1]

これは奇妙な答えです。なぜなら、並べ替えはインプレースで行いますが、逆に逆順で行うためです。元のリストにエイリアスを設定する別の変数がある場合、その値以降の要素には元の順序または降順の要素はありません。エイリアスは昇順でソートされたリストを指します。それはかなり意外であり、微妙なバグの原因となる可能性があります。
kaya3

0

ここに別の方法があります


timestamp.sort()
timestamp.reverse()
print(timestamp)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.