使列表唯一(python)

2024-04-19 13:54:07 发布

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

我有一个大约3000种分类的矩阵

节肢动物/六足动物/昆虫纲/鞘翅目/天牛科/天牛

每一行都是一系列的分类。我需要做的是,对3000行进行排序,使每一行都是唯一的,这样文件就可以输入到一个创建系统发育(进化)树的程序中。你知道吗

我尝试过使用集合,但由于列表不是可散列对象,因此出现了一个错误,但是将每一行保持在一起非常重要,因为每一行的每一列中的值都是嵌套的。你知道吗

确保我在最后一列中只有唯一的值但保持每行的完整性的最佳方法是什么?你知道吗

非常感谢


Tags: 文件对象方法程序列表排序错误分类
2条回答

正如在注释中提到的,元组是可散列的,即使列表不是。所以让我们将您的行转换为元组!你知道吗

# Create the Dataset
L = []
L.append(["Arthropoda", "Hexapoda", "Insecta", "Coleoptera", "Cerambycidae", "Anaglyptus"])
L.append(["Arthropoda", "Hexapoda", "Insecta", "Coleoptera", "Cerambycidae", "Aromia"])

# Instead of a list of lists, let's have a list of tuples!
L = [tuple(x) for x in L]

# Using a set, we can easily remove duplicates
L = set(L)

Python大师可能会被冒犯,但这个答案值得一试

l = []
with open('file.txt', 'r') as fp:
    for i in fp.readlines():
        if i not in l:
            l.append(i)

with open('file2.txt', 'w') as fp:
    fp.writelines(l)

相关问题 更多 >