2016-04-06 6 views
0

Çözüldü: Bunun neden şu anda beklemediğinden emin olmadığından, Damian Yerrick çözülmüş bir soruna yardımcı oldu ve ona ve bana oldukça açık görünüyordu. Teşekkürler!Biçimdeki bir tarihi nasıl sıralayabilirim: gün/ay/yıl saati: dk: sn

Düzenleme: Birisi datetime kullanarak söz ama ben ayrı, tek tek her başlığın ayrıldığında biri olarak listenin tamamını sıralama ile bu birleştirmek için nasıl bir anlayış değilim:

bu sıralamak nasıl biraz kafam karıştı , onu parçalara ayıracak mıyım? Şu anda sadece tarihe göre sıralar. İşte biçimi şöyledir:

(31/03/2016 19:42:28, değer)

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

Tarihlerinizi ['datetime' module] (https://docs.python.org/3.5/library/datetime.html) kullanarak ayırın. – ChrisP

+0

Eh, format hatası ile ilgili var, ama bu bana nasıl yardımcı olduğunu hiçbir fikrim yok. Ne tükürdüğü hiç bir şekilde düzen değildir. – Zak44

+0

Bazı gerçek örnek veriler sağlayabilir misiniz? Yukarıdaki örnek bir 'datetime' nesnesini ve bir değeri veya bir 'str' içeren bir 'tuple' mıdır? – mfitzp

cevap

1

Python sıralama her öğe türetilen bir "anahtar" temelinde çalışır. Her öğeyi bir anahtara çevirir, öğeleri anahtarlarına göre sıralar ve daha sonra orijinal öğeleri bırakarak anahtarları atar. Python, normalde öğenin kendisini anahtar olarak kullanır ve tupl'ler için, normal karşılaştırma davranışıyla tuple öğelerinin kullanılmasıyla aynıdır. Varsayılan anahtar türevini geçersiz kılan ve ardından orijinal öğeleri sıralarken Python'a bu işlevi kullanmasını söyleyen bir işlev yapmak isteyeceksiniz.

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

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

Bu şekilde, sırayla her bir elemanı ile (bu durumda getDateFromTuple() olarak) key işlevini çağırır Python'ın sorted() fonksiyonu kriteri olan (tupleList). Bu, Python'un tupleList öğelerini, her bir tuple'daki hazır dizelerle değil, ayrıştırılmış tarihlerle sıralamasına neden olur.

key'un başka bir açıklaması için, bkz. the section "Key Functions" in Python Sorting HOW TO ve documentation for sorted().

+0

Hmm Bunu biraz kafa karıştırıcı olmasına rağmen deneyeceğim. GetDateFromTuple işlevini ve bu belirli öğede nasıl çalıştığını anlıyorum. Ama sıralanan anahtarın, belirtmek zorunda kalmadan tupleList'in bir tuple öğesi olması fikridir. Anahtar = getDataFromTuple (tupleList [i]) demek zorunda kalacağınızı düşünürdüm. Teşekkürler! – Zak44

+0

@ Zak44 'sıralanmış()' işlevi, 'tupleList' öğesinin her birindeki' anahtar 'işlevini (bu durumda 'getDateFromTuple()') çağırır. –

+0

@ Zak44 '(tupleList [i]) 'yi sizin için ekler, çünkü kendi yerel' i' adlı arayanı (yani, programınız) görmez. –