如何从列表中的整数中删除重复的数字
问题我有这个清单
名称= [ [“猫”,9112,“dog123”,5625],[“幸运”,1232,“bad23”]]
根据这个问题
我用这段代码做到了
names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]
new = [ for y in names]
输出 -: [, ]
expected output -: [, ]
I was using this code but it wasn't workingm = sorted(list(set(new)))
print(m)
Error -:Traceback (most recent call last):
File "main.py", line 13, in <module>
m = sorted(list(set(new)))
TypeError: unhashable type: 'list'
Note -: I want to keep only first original digits.(eg -: 1232 need to become 123 not 132)
回答
列表是可变的;在 Python 中,可变容器不可散列。 set(names) 需要对名称中的元素进行散列以对它们进行排序,但是您的名称列表将列表作为元素( [“cat”、9112、“dog123”、5625] 和 [“luck”、1232、“” bad23"] ),因此它不能转换为集合。
试试这个:
names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]
li = [ for y in names]
final = [["".join(sorted(set(str(x)), key=str(x).index)) for x in y] for y in li]
print(li)
print(final)
它提供以下输出:
[, ]
[['912', '562'], ['123']]
编辑:
该解决方案将产生预期的结果。
它可能不是最好和最优化的解决方案,并且 OP 没有提到任何与性能相关的内容。
页:
[1]