python - 将某些文件行值存储在不同的列表中
问题描述
我有一个文件,其中每一行代表用户、项目、评级和时间戳,其中列表从第 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
解决方案
推荐阅读
- openedge - 将 FOR EACH 中的行添加到 TEMP-TABLE
- swift - FCM 适用于 Firebase v3.4.1,但不适用于 v5.8.1
- ffmpeg - Crop, Resize and Cut all in one command - FFMPEG
- amazon-web-services - How to set DHCP Options Set via AWS SDK
- c++ - LNK1104 无法打开文件“libboost_filesystem-vc141-mt-gd-x32-1_68.lib”
- javascript - 如何解决此错误“SyntaxError: Unexpected token < in JSON at position 0”
- python - 为什么 Python 比较运算符显示不同的结果?
- amazon-web-services - 如何强制 CodeBuild (AWS) 失败?
- ios - 在发布新的应用程序更新时,如何从 iTunesConnect 中的先前版本复制“此版本中的新增功能”元数据?
- python - Keras 时间序列:在 LSTM 中包含静态和动态变量的建议