如何按日期格式对日期进行排序:日/月/年小时:分钟:秒

问题描述:

解决:不知道为什么现在暂停,Damian Yerrick帮助解决了问题,而且他和我似乎都很清楚。谢谢!如何按日期格式对日期进行排序:日/月/年小时:分钟:秒

编辑:有人提用日期时间,但我不理解如何与整个列表排序为一体,当我分道扬镳各单个元组纳入本:

我有点困惑如何解决这,我需要将它分开吗?现在只按日期排序。下面是格式:

(31/03/2016十九时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

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()函数将调用key功能(在这种情况下getDateFromTuple())序列中的每个元素进行排序(tupleList)。这会导致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它为你添加了'(tupleList [i])',因为它有它自己的本地'i',调用者(也就是你的程序)看不到。 –