gpt4 book ai didi

python - 删除列表列表中的列表中的重复项

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:34 25 4
gpt4 key购买 nike

我有一个类型列表:

biglist = [[
[77.56913757324219, 12.975883483886719], [77.5671615600586, 12.976168632507324],
[77.5680160522461, 12.980805397033691], [77.56996154785156, 12.980448722839355],
[77.56913757324219, 12.975883483886719]
]]

为了删除重复项,我在 python 中编写了以下内容:

templist = set(map(tuple,biglist[0]))
newlist = map(list,templist)

虽然这删除了 ​​dup 元素,但我放松了列表列表中列表的初始结构。有人可以帮忙删除重复项吗?

谢谢

编辑:关于我想做的事情的一些背景:
您看到的数字是地理信息系统中使用的多边形形状的一部分。我正在尝试在 MongoDB 中存储并索引它。但是,我在索引时遇到错误,可能的解决方案之一是删除重复值并尝试再次对其建立索引。基本上,您看到的列表是 GeoJSON 格式,我需要保留该顺序以插入到 mongoDB 中。

预期输出为:

[[
[77.56913757324219, 12.975883483886719], [77.5671615600586, 12.976168632507324],
[77.5680160522461, 12.980805397033691], [77.56996154785156, 12.980448722839355]
]]

最佳答案

好的,这应该得到你想要的:

>>> newlist = [[]]
>>> for i in range(len(biglist[0])):
... if not test[0][i] in newlist[0]:
... newlist[0].append(test[0][i])
...
>>> newlist
[[[77.56913757324219, 12.975883483886719], [77.5671615600586, 12.976168632507324], [77.5680160522461, 12.980805397033691], [77.56996154785156, 12.980448722839355]]]

但是,您确实应该考虑一些事情:

  • 正如我在评论中指出的,比较 float 会给你带来很多麻烦。相差小于 1x10^8(或更小)的值将导致比较失败,这种差异可能是由于精度不足(浮点错误)引起的。您应该始终将 float 与容差进行比较以避免这种情况。

  • 我不确定为什么你有一个双重嵌套列表,但从你在这里给出的内容来看,它看起来很愚蠢,并且让一切变得更加复杂

此外,您的解决方案不起作用,因为您将列表转换为集合。由于集合本质上是无序的,因此当您重新转换为列表时,顺序会发生变化。将来,如果您关心元素的顺序(形成您的编辑,听起来就像您所做的那样),请避免使用集合(或字典)。

关于python - 删除列表列表中的列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22912096/

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