按指定索引顺序排序列表

19 投票
4 回答
40167 浏览
提问于 2025-04-16 01:22

我有一个从文件中读取的行列表。我需要根据时间戳对这个列表进行排序。我已经用正则表达式提取出了时间戳,并把它们放到了一个单独的列表中。这两个列表的索引是对应的。一旦我对时间戳列表进行排序,就可以得到索引的顺序。

有没有办法把这个索引的顺序应用到原始的行列表上?最终的结果应该是排序后的原始行列表。

举个例子:

listofLines =  ['log opened 16-Feb-2010 06:37:56 UTC', 
                '06:37:58 Custom parameters are in use',
                'log closed 16-Feb-2010 05:26:47 UTC']
listofTimes = ['06:37:56', '06:37:58', '05:26:47']
sortedIndex = [2,0,1]

4 个回答

3

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个功能时,发现它的表现和预期的不一样。这种情况很常见,尤其是在处理复杂的代码或者不熟悉的技术时。

当你遇到这样的情况,不妨先仔细检查一下你的代码,看看有没有拼写错误或者逻辑上的问题。有时候,问题可能只是一个小小的疏忽。此外,查阅相关的文档或者在网上搜索一下,看看有没有人遇到过类似的问题,也是一种很好的解决办法。

总之,编程的过程中难免会遇到各种各样的问题,保持耐心,多尝试几种方法,通常都能找到解决方案。

sorted(zip(listofTimes, listofLines))
51

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设置了一些规则,只有当这些规则被满足时,程序才会继续进行。

比如说,如果你在写一个游戏,可能会有这样的规则:只有当玩家的分数达到一定的数值,才能进入下一关。这种情况下,你就需要用到条件判断。

条件判断就像是一个“检查点”,程序会在这里停下来,看看条件是否成立。如果成立,程序就会执行接下来的代码;如果不成立,程序可能会执行其他的代码,或者直接停止。

在代码中,条件判断通常用一些关键字来表示,比如“if”(如果)和“else”(否则)。这些关键字帮助程序理解在什么情况下该做什么。

总之,条件判断是让程序根据不同情况做出不同反应的重要工具,掌握它能让你的程序更加灵活和智能。

[listofLines[i] for i in sortedIndex]
11

我觉得你可以这样做

[line for (time,line) in sorted(zip(listofTimes, listofLines))]

不过如果你有一个函数,或者可以写一个函数来自动从这一行中提取时间,

def extract_time(line):
    ...
    return time

你也可以这样做

listofLines.sort(key=extract_time)

或者如果你想保持原始列表不变,

sorted(listofLines, key=extract_time)

撰写回答