2016-04-06 8 views
0

解決済み:これが現在保留になっている理由については、Damian Yerrickが問題を解決するのを助け、ありがとう!どのように日付を日付順に並べ替えることができますか:日/月/年時:分:秒

編集:誰かが日時を使用して言及するが、私は離れ単一のタプル分割したときに、一つとしてリスト全体をソートすると、これを組み込む方法を理解していないのです。

これをソートする方法を、私は少し混乱しているが、私はそれを分割する必要がありますか?今は日付でソートされます。ここでフォーマットである:

(31/03/2016午前19時42分28秒、値)

def sortDB(tupleList): 
    dtList = [] 

    for tuple in tupleList: 
     dt = datetime.datetime.strptime(tuple[0], "%d/%m/%Y %H:%M:%S") 
     dtList.append(dt) 

    #Not sure how to get to here... AND keep the same date format I had in the beginning as I don't want it to change 
    sortedKeyList = sorted(tupleList, key=itemgetter(0), reverse=True) 
+0

['datetime'モジュール](https://docs.python.org/3.5/library/datetime.html)を使用して日付を解析します。 – ChrisP

+0

私はフォーマットエラーを回避しましたが、これがどのように私のソートを助けているのかわかりません。それが背後から吐き出されることは決して順調ではありません。 – Zak44

+0

実際のサンプルデータを提供できますか?上記の例は 'datetime'オブジェクトと値または' str'を含む 'tuple'ですか? – mfitzp

答えて

1

Pythonでソート各項目に由来する「キー」に基づいて動作します。各項目をキーに変換し、キーで項目をソートし、キーを破棄して元の項目を残します。 Pythonは通常、項目自体をキーとして使用し、タプルについては、タプルの要素を通常の比較動作とともに使用するのと同じです。デフォルトのキー派生をオーバーライドし、元のアイテムをソートするときにその関数を使用するようにPythonに指示する関数を作成したいと思うでしょう。

def getDateFromTuple(tuple): 
    return datetime.datetime.strptime(tuple[0], "%d/%m/%Y %H:%M:%S") 

sortedKeyList = sorted(tupleList, key=getDateFromTuple, reverse=True) 

この方法では、Pythonのsorted()機能は、ソートされたシーケンス(tupleList)の各要素に(この場合はgetDateFromTuple()で)key関数を呼び出します。これにより、PythonはtupleListの要素を、各タプルの文字列ではなく、解析された日付でソートします。

keyの別の説明については、the section "Key Functions" in Python Sorting HOW TOdocumentation for sorted()を参照してください。

+0

少し混乱していますが、これを試してみます。私はgetDateFromTuple関数とその特定の要素でどのように動作するのかを理解しています。しかし、ソートされたキーは、それを示すことなく、tupleListのタプル要素になるという考えがあります。私はあなたがkey = getDataFromTuple(tupleList [i])と言う必要があると思います。ありがとう! – Zak44

+0

@ Zak44 'sorted()'関数は 'tupleList'の各要素に対して' key'関数(この場合は 'getDateFromTuple()')を呼び出します。 –

+0

@ Zak44これは、呼び出し側(つまりあなたのプログラム)には見えないローカルな 'i'を持っているため、'(tupleList [i]) 'を追加します。 –

関連する問題