Python程序从行中删除双重条目

时间:2013-06-05 15:58:01

标签: 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

我一直在搜索和试用/(很多)错误,但没有运气。

2 个答案:

答案 0 :(得分:7)

使用set

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')

答案 1 :(得分:1)

希望这有用:

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