2016-04-06 5 views
0

Gelöst: Nicht sicher, warum dies jetzt in der Warteschleife ist, half Damian Yerrick Problem gelöst und es schien mir klar und mir. Vielen Dank!Wie kann ich ein Datum im Format sortieren: Tag/Monat/Jahr Stunde: Min: Sek

Edit: Erwähnen Jemand Datetime verwenden, aber ich verstehe nicht, wie das zu übernehmen mit der gesamten Liste als eine Sortierung, wenn ich jedes einzelnes Tupel gespalten:

Ich bin ein wenig verwirrt, wie diese sortieren , müsste ich es auseinander teilen? Im Moment sortiert nur nach Datum. Hier ist das Format:

(31/03/2016 19:42:28, Wert)

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

Analysieren Sie Ihre Daten mit dem ['datetime'-Modul] (https://docs.python.org/3.5/library/datetime.html). – ChrisP

+0

Nun, ich habe den Formatfehler verstanden, aber ich habe keine Ahnung, wie mir das hilft. Was es ausspuckt ist in keiner Weise in Ordnung. – Zak44

+0

Können Sie einige Beispieldaten bereitstellen? Ist das obige Beispiel ein "Tupel", das ein "Datetime" -Objekt und einen Wert oder ein "Str" enthält? – mfitzp

Antwort

1

in Python Sortierung arbeitet auf der Grundlage eines "Schlüssel" von jedem Punkt abgeleitet. Sie übersetzt jeden Gegenstand in einen Schlüssel, sortiert die Gegenstände nach ihren Schlüsseln und verwirft dann die Schlüssel, wobei die ursprünglichen Gegenstände zurückgelassen werden. Python verwendet normalerweise das Element selbst als Schlüssel und für Tupel das Gleiche wie die Verwendung der Elemente des Tupels mit ihrem normalen Vergleichsverhalten. Sie sollten eine Funktion erstellen, die die Standardschlüsselableitung überschreibt, und dann Python mitteilen, diese Funktion beim Sortieren der ursprünglichen Elemente zu verwenden.

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

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

diese Weise sorted() Funktion des Pythons ruft die key Funktion (in diesem Fall getDateFromTuple()) für jedes Element der Sequenz (tupleList) sortiert werden. Dies bewirkt, dass Python die Elemente von tupleList nach den analysierten Daten sortiert und nicht nach den literalen Zeichenfolgen in jedem Tupel.

Für eine weitere Erläuterung von key, siehe the section "Key Functions" in Python Sorting HOW TO und documentation for sorted().

+0

Hmm Ich werde versuchen, dies, obwohl es ein bisschen verwirrend ist. Ich verstehe die Funktion getDateFromTuple und wie sie auf diesem spezifischen Element funktioniert. Aber es ist die Idee, dass der Schlüssel in sorted ein Tupel-Element der tupleList wäre, ohne dass ich es angeben müsste. Ich würde denken, dass Sie key = getDataFromTuple (tupleList [i]) sagen müssten. Vielen Dank! – Zak44

+0

@ Zak44 Die Funktion 'sorted()' ruft die Funktion 'key' (in diesem Fall' getDateFromTuple() ') für jedes Element von' tupleList' auf. –

+0

@ Zak44 Es fügt das '(tupleList [i])' für Sie hinzu, weil es sein eigenes lokales 'i' hat, das der Aufrufer (dh Ihr Programm) nicht sieht. –

Verwandte Themen