gpt4 book ai didi

python - 如何从列表中的整数中删除重复的数字

转载 作者:行者123 更新时间:2023-12-04 13:36:01 25 4
gpt4 key购买 nike

我有这个 list

names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]
根据 this question
我已经通过使用此代码完成了
names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]
new = [[x for x in y if isinstance(x, int)] for y in names]
输出-: [[9112, 5625], [1232]]
问题
现在,我想删除重复的数字。
expected output -: [[912, 562], [123]]
我正在使用此代码,但是没有用
m = sorted(list(set(new)))
print(m)
错误-:
Traceback (most recent call last):    
File "main.py", line 13, in <module>
m = sorted(list(set(new)))
TypeError: unhashable type: 'list'
注意-:我只想保留第一个原始数字(例如-:: 1232需要成为 123而不是 132)

最佳答案

列表是可变的;在Python中,可变容器不可散列。 set(names)需要对names的元素进行哈希处理才能对它们进行排序,但是您的names列表具有作为其元素的列表(["cat", 9112, "dog123", 5625]["luck", 1232, "bad23"]),因此无法将其转换为set

尝试这个:

names = [ ["cat", 9112, "dog123", 5625], ["luck", 1232, "bad23"] ]

li = [[x for x in y if isinstance(x, int)] 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)

它提供以下输出:
[[9112, 5625], [1232]] 
[['912', '562'], ['123']]

编辑:

该解决方案将提供所需的结果。
这可能不是最佳和最佳的解决方案,OP并未提及与性能相关的任何内容。

关于python - 如何从列表中的整数中删除重复的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59450567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com