2015-08-29 70 views
-1

名單我有一個這樣的名單:排序一個月的日期在python

['25/May/2015', '27/May/2015', '27/Apr/2015', '27/Jan/2015', '07/May/2015' '22/May/2015', '16/Jan/2015', '29/Jan/2015', '28/Feb/2015', '18/Feb/2015', '08/May/2015', '20/Jan/2015', '24/Jan/2015', '31/Mar/2015', '30/Apr/2015', '17/Feb/2015', '19/Mar/2015', '05/May/2015', '22/Jan/2015', '14/Aug/2015', '26/Feb/2015', '14/Mar/2015', '28/May/2015']'] 

我要訂購每月日期:一月,二月,三月,等... 但我也想一天命令他們,這意味着第一天必須是:1 /月/ 2015年2隨後/月/ 2015年

我試圖對列表進行排序:

days.sort() 

但it's訂貨清單按天而不是按月。

任何會非常感激

+0

你必須嘗試比*更難一點*。 –

+1

視圖[如何做我排序此列表中的蟒蛇,如果我的日期是在一個字符串](http://stackoverflow.com/questions/2589479/how-do-我排序這個列表中的蟒蛇,如果我的日期是在一個字符串) –

回答

0

嘗試sorted與關鍵。

from datetime import datetime 
days_sorted = sorted(days, key=lambda day: datetime.strptime(day, "%d/%b/%Y")) 
+0

完美,謝謝。我可以問你向我解釋這是如何工作的?我會在5分鐘內將其標記爲正確。 – NachoMiguel

+0

關鍵是把你的字符串轉換成可排序的東西,這就是'datetime'對象('datetime.strptime')。 '「%d /%b /%Y」'只是[你的日期格式](https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior)。 – beezz

0

您將要使用自己的比較函數對日期進行排序。 sort允許這個,你只需要說list.sort(key=comparison_function)。爲了使功能列表進行比較的幾個月裏,一個簡單的想法,我想出了是

months = {"Jan":0, "Feb":1, "Mar":2, "Apr":3, "May":4, "Jun":5, "Jul":6, "Aug":7, "Sep":8, "Oct":9, "Nov":10, "Dec":11 } 

做一個dict每個月變身爲相應數量的

def month_value(date): 
    return months[date.split('/')[1]] 

編寫一個函數,需要你的一個字符串,並返回它的第二個組件的值。

dates.sort(key=month_value) 

這將根據他們的月份對日期進行排序。

相關問題