对于类似的主题已经存在几个问题,但它们都没有解决我的问题。
我已经为文本文件写了多个列表。在那里,每一行代表一个清单。看起来像这样:
1: ['4bf58dd8d48988d1ce941735', '4bf58dd8d48988d157941735', '4bf58dd8d48988d1f1931735', etc.]
2: ['4bf58dd8d48988d16a941735', '4bf58dd8d48988d1f6941735', '4bf58dd8d48988d143941735', etc.]
...
我创建了它:
with open('user_interest.txt', 'w') as f:
for x in range(1, 1084):
temp = df.get_group(x)
temp_list = temp['CategoryID'].tolist()
f.write(str(temp_list) + "\n")
如果我读取文件,我会将整个文件作为列表。如果我然后访问行,我将它们作为类字符串!但我想把它们再次作为一个列表,就像我存储它们之前一样。
with open('user_interest.txt', 'r') as file:
for line in file:
#temp_list.append(line)
print(similarity_score(user_1_list, temp_list))
这里的行是类字符串,不是我想要的列表。使用temp_list的想法也不起作用。 (user_1_list是固定值,而temp_list不是)
以下是问题的上下文:我希望在我的similarity_score函数中处理每一行。我不需要“永远”的列表只需将其交给我的函数。此功能应适用于每一行。 该函数计算余弦相似度,我必须找到给定用户的前10个最相似的用户。所以我必须将每个其他用户与我的给定用户(user_1_list)进行比较。
Psedo代码:
read line
convert line to a list
give list to my function
read next line ...
可能这只是一个简单的修复,但我还没有得到它。我不希望每行都集成到新列表/嵌套列表中
[['foo', 'bar', ...]]
我也不希望他们都在一个列表中。
感谢您的帮助,并询问您是否需要更多信息!
答案 0 :(得分:0)
您应该使用适当的序列化程序(如JSON)来编写列表。然后,您可以使用它来反序列化它们:
import json
# when writing the lists
f.write(json.dumps(temp_list) + "\n")
# when reading
lst = json.loads(line)
答案 1 :(得分:0)