Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中按日期对数组排序?_Python_Arrays_List_Sorting - Fatal编程技术网

如何在python中按日期对数组排序?

如何在python中按日期对数组排序?,python,arrays,list,sorting,Python,Arrays,List,Sorting,我需要按照每个元素中的日期顺序对这个2D数组进行排序。我在网站上尝试了所有其他的解决方案,但似乎都没有效果 lst=['08/12/2020,GGGGG H,中等'], ['17/12/2020,中'], ['09/12/2020,bbbbbb,低'], ['30/12/2020,bbbbbb,低']] 我不确定您是否真的在本网站上尝试了所有其他解决方案,但以下是您如何做到万无一失的方法: 从日期时间导入日期时间 lst=['08/12/2020,GGGGG H,中等'], ['17/12/20

我需要按照每个元素中的日期顺序对这个2D数组进行排序。我在网站上尝试了所有其他的解决方案,但似乎都没有效果

lst=['08/12/2020,GGGGG H,中等'],
['17/12/2020,中'],
['09/12/2020,bbbbbb,低'],
['30/12/2020,bbbbbb,低']]

我不确定您是否真的在本网站上尝试了所有其他解决方案,但以下是您如何做到万无一失的方法:

从日期时间导入日期时间
lst=['08/12/2020,GGGGG H,中等'],
['17/12/2020,中'],
['09/12/2020,bbbbbb,低'],
['30/12/2020,bbbbbb,低']]
lst.sort(key=lambda x:datetime.strtime(x[0].split(“,”)[0],%d/%m/%Y”))
#您的列表'lst'现在已排序。
打印(lst)
输出


更新:您也可以查看一下关于我在上述代码中使用的名称的官方文档。首先,我投票支持Daveldito的答案,因为它是正确的。我唯一不同的做法是将日期代码拉到函数中,以便它更可读(更重要的是,可测试!),如下所示:

def by_date(item):
    date = item.split(“,”)[0]
    return datetime.strptime(date, “%d/%m/%Y”)

def test_by_date():
    assert by_date(“08/12/2020,gggggh,medium”) == datetime(2020, 12, 8, 0, 0)

lst.sort(key=by_date)
逻辑是完全相同的,但我觉得这个版本在凌晨3点事情发生时可读性更好,我必须醒来并修复它们。另外,看看编写单元测试来验证您是根据您认为是的值排序是多么容易


不过,这只是达维尔迪托正确(也是很好)答案的一个变体。

到目前为止,你尝试了什么?尝试从字符串中提取日期,然后进行排序。请从中重复和。“演示如何解决此编码问题?”与堆栈溢出无关。您必须诚实地尝试解决方案,然后询问有关实现的具体问题。堆栈溢出不是为了替换现有的教程和文档。因为您已经在本网站上尝试了所有内容,所以您可以发布代码。在您这样做之前,您不会有堆栈溢出问题。我之前尝试过这个精确的解决方案。让我发布错误哦,等等!这一次它确实起了作用。我尝试的上一个版本没有“from datetime import datetime”行
def by_date(item):
    date = item.split(“,”)[0]
    return datetime.strptime(date, “%d/%m/%Y”)

def test_by_date():
    assert by_date(“08/12/2020,gggggh,medium”) == datetime(2020, 12, 8, 0, 0)

lst.sort(key=by_date)