如果我在带括号的列表中有重复项,我该怎么办

Sti*_*n G 5 brackets list set python-3.x

假设我有以下列表:

 m=[1,2,[1],1,2,[1]]
Run Code Online (Sandbox Code Playgroud)

我想带走所有重复的东西.如果它不是列表中的括号,那么我可以使用:

 m=list(set(m))
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我得到错误:

不可用的类型'集'.

什么命令将帮助我删除重复项,以便我只能留下列表

 m=[1,2,[1]]
Run Code Online (Sandbox Code Playgroud)

谢谢

daw*_*awg 1

您可以按照以下方式做一些事情:

m=[1,2,[1],1,2,[1]]
seen=set()
nm=[]
for e in m:
    try:
        x={e}
        x=e
    except TypeError:
        x=frozenset(e)  
    if x not in seen:
        seen.add(x) 
        nm.append(e)
>>> nm
[1, 2, [1]]
Run Code Online (Sandbox Code Playgroud)

来自评论:此方法保留原始列表的顺序。如果您希望数字类型排在第一位,其他类型排在第二位,您可以执行以下操作:

sorted(nm, key=lambda e: 0 if isinstance(e, (int,float)) else 1)
Run Code Online (Sandbox Code Playgroud)