首页 > 解决方案 > 将某些文件行值存储在不同的列表中

问题描述

我有一个文件,其中每一行代表用户、项目、评级和时间戳,其中列表从第 0 个用户到第 n 个用户排序,然后按最近的时间戳条目排序,如下所示:

0,1,5,1412899200
0,1,5,1412899200
0,6,5,1412899200
1,12,5,1458432000
1,12,5,1458432000
1,17,5,1458432000

我想将每个用户最近的时间戳条目存储在测试列表中,第二个最近的条目存储在验证列表中,其余的存储在火车列表中。我的第一个想法是将每个用户的条目作为一个对象存储在列表中,并通过比较索引值进行拆分。但我只是想知道,有没有更好/更有效的方法可以实现这一目标?编辑:这是我当前的代码(sortedSamples 是包含所有条目的文件):

train = []
validation = []
test = []
userEntries = []
with open("sortedSamples", 'r') as y:
    data = y.readlines()
    idx = 0
    for line in data:
        nMin = 0
        entry = [int(x) for x in line.split(",")]
        user = entry[0]
        if user == idx:
            userEntries.append(entry)
        else:
            idx += 1
            for entry in range(len(userEntries)):
                if entry == 0:
                    min = userEntries[entry][3]
                    test.append(userEntries[entry])
                else:
                    if nMin == 0 and nMin != min:
                        nMin = userEntries[entry][3]
                        validation.append(userEntries[entry])
                    else:
                        if userEntries[entry][3] == min:
                            test.append(userEntries[entry])
                        elif userEntries[entry][3] == nMin:
                            validation.append(userEntries[entry])
                        else:
                            train.append(userEntries[entry])
            userEntries = []
return train, validation, test

标签: pythondata-science

解决方案


推荐阅读