在Python中消除列表列表中的重复项[duplicate]

hc8w905p  于 2023-05-08  发布在  Python
关注(0)|答案(1)|浏览(100)

此问题已在此处有答案

Removing duplicates from a list of lists(16个答案)
5天前关闭。
我有一个列表列表,如下所示:

lst = [[5, [1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0], 0.391304347826087, 870.6534368919102, 11650.353534277081, 7620.331760518431, '11101101110011001011010'], [3, [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1], 0.7391304347826086, 369.9004500109476, 4096.179541538357, 3076.797424081743, '10000000000011001000101'], [5, [1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0], 0.391304347826087, 870.6534368919102, 11650.353534277081, 7620.331760518431, '11101101110011001011010']]

我希望删除lst中的重复列表,对于本例,它将是[5,[1,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,1,0,1,1,0,1,0,1,0],0.391304347826087,870.6534368919102,11650.353534277081,7620.331760518431,'1110101101100110011010101010']中的一个。

set(lst)

但我得到了错误的不可散列类型。

gj3fmq9x

gj3fmq9x1#

你遇到了一个错误,因为你试图使用set()函数,它只适用于可散列数据类型。列表是可变的和不可散列的,所以你不能直接创建一组列表。相反,您可以使用不同的方法从列表列表中删除重复项。一种方法是遍历列表,检查它们是否已经被添加到新列表中:

lst = [
    [5, [1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0], 0.391304347826087, 870.6534368919102, 11650.353534277081, 7620.331760518431, '11101101110011001011010'],
    [3, [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1], 0.7391304347826086, 369.9004500109476, 4096.179541538357, 3076.797424081743, '10000000000011001000101'],
    [5, [1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0], 0.391304347826087, 870.6534368919102, 11650.353534277081, 7620.331760518431, '11101101110011001011010']
]

unique_lst = []

for item in lst:
    if item not in unique_lst:
        unique_lst.append(item)

print(unique_lst)

相关问题