我建立了以下功能来对行进行排序,然后对每行进行排序,它将行内的内容排序为数值。像这样的行:67:1 45:1 67:1 89:131:1 89:5 45:1 23:1 代码:with open("SVM/svm-pos-train.txt") as f, open("SVM/svm-pos-train2.txt", 'w') as out: for line in f: line = line.split() line.sort(key = lambda x: int(x.split(':')[0])) out.write(" ".join(line) + '\n')我该如何编辑它,这样也可以从行中删除重复项,如下所示: 45:1 67:1 89:1 23:1 31:1 45:1 89:1我一直在搜索和试用/(很多)错误,但是没有运气。
2 回答

狐的传说
TA贡献1804条经验 获得超3个赞
使用集
line = line.split()
line = list(set(line))
set 返回唯一元素的无序集合,然后将其转换回列表,然后对列表进行排序。
编辑:
line = line.split()
line = list(set(line))
out.write(" ".join(sorted(line, x: (int(x.split(':')[0]), int(x.split(':')[1])))) + '\n')

凤凰求蛊
TA贡献1825条经验 获得超4个赞
希望这会有所帮助:
#!/usr/bin/python
with open("d1.txt") as f, open("d2.txt", 'w') as out:
for line in f:
fields = line.split()
set_ = set(fields)
list_ = list(set_)
list_.sort()
out.write(" ".join(list_) + '\n')
添加回答
举报
0/150
提交
取消