首页 > 解决方案 > 从具有不可散列元素的列表中取出唯一值

问题描述

所以我有以下列表:

test_list = ['Hallo', 42, [1, 2], 42, 3 + 2j, 'Hallo', 'Hello', [1, 2], [2, 3], 3 + 2j, 42] 

现在我想从列表中获取唯一值并将它们打印在屏幕上。我尝试使用 set 函数,但由于列表中的 [1,2] 和 [2,3] 值,它不起作用(Type error: unhasable type: 'list') 。我尝试使用 append 和 extend 函数,但还没有提出解决方案。

期望:['你好',42,[1,2],(3+2j),'你好',[2,3]]

def unique_list(a_list): 
    a = set(a_list)
    print(a)
a_list = ['Hallo', 42, [1, 2], 42, 3 + 2j, 'Hallo', 'Hello', [1, 2], [2, 3], 3 + 2j, 42]
print(unique_list(a_list))   

标签: pythonpython-3.x

解决方案


如果列表包含不可散列的元素,请repr使用与集合一起使用的可散列键:

def unique_list(a_list):
    seen = set()
    for x in a_list:
        key = repr(x)
        if key not in seen:
            seen.add(key)
            print(x)

推荐阅读