如何在Python中创建可更新的元组列表?

时间:2018-11-08 14:21:58

标签: python python-3.x list

我正在用Python 3编写脚本,在其中浏览文件,并收集有关各种任务持续时间的信息。我需要维护这些持续时间的汇总列表(以datetime.timedelta对象的形式),并按日期和完成的任务进行划分。每个任务都由ID字符串标识。

这意味着在浏览文件时,我会建立一个记录列表,其中每个记录都包含一个日期,一个ID字符串和一个持续时间。添加新记录时,我首先检查列表中是否已存在日期和ID字符串组合。如果是,我将新的持续时间添加到列表中的当前持续时间。如果日期和ID字符串组合不存在,则将记录追加到列表中。

我事先不知道日期和ID字符串有多少种不同的组合,所以我无法对其进行预分配。

最后,我希望能够在将日期和ID字符串打印到标准输出之前对列表进行排序。

我尝试在元组列表中执行此操作,但是元组是不可变的,因此我无法在找到的现有工期中添加新的工期。

如果按下,我可以通过连接日期和ID字符串的字符串表示来创建新的ID字符串。但是我真的更希望将这两个值分开。

这可能吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:2)

在这种情况下,我不会使用列表,而是使用字典。这是一个简单的示例:

data = {}

with open("myfile.txt") as file:
    for line in file:
        # Parse the line for the following:
        # tid: The task ID we read
        # date: The date we read
        # duration: The duration we read

        # Once the data has been parsed out, store it:
        data.setdefault((date, tid), 0)
        data[(date, tid)] += duration

解析文件后,您可以获取字典(data.keys())的键,对其进行排序,然后打印出结果。