从lin中删除双项的Python程序

2024-04-19 12:37:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我构建了以下函数来对行进行排序,然后每行将行中的内容排序为数值。你知道吗

像这样的线条:

67:1 45:1 67:1 89:1
31: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

我一直在寻找和尝试(很多)错误,但没有运气。你知道吗


Tags: 函数代码postxt内容排序asline
2条回答

希望这有帮助:

#!/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')

使用set

line = line.split()
line = list(set(line))

set返回唯一元素的未排序集合,然后将其转换回list,然后对list进行排序。你知道吗

编辑:

line = line.split()
line = list(set(line))
out.write(" ".join(sorted(line, x: (int(x.split(':')[0]), int(x.split(':')[1])))) + '\n')

相关问题 更多 >