【发布时间】:2021-07-27 11:58:45
【问题描述】:
我有一个从 KML 文件中生成的路线编号和坐标的二维列表。顺序是'routenumber','coordinates' 例如:
[['90', '54.93920,25.52,0.0'], ['93', '37.326,19.39,0.0'], ['94', '-110.67,24.395,0.0'], ['95', '-102.154599,17.915081,0.0'], ['96', '-109.177574,25.537,0.0'], ['97', '54.93920,25.52,0.0'], ['98', '55.319,25.506,0.0'], ['911', '54.939206,25.5249,0.0'], ['914', '54.93920,25.52,0.0'], ['915', '54.9169,25.5031,0.0'], ['916', '55.3709,25.35949,0.0'], ['917', '54.939206,25.5249,0.0'], ['920', '56.4641,25.21,0.0'], ['921', '56.4916,25.376,0.0']]
对于列表中的每条路线,我都试图找到具有相同坐标的路线,例如
Output:
54.939206,25.5249,0.0 is seen in 911, 917
54.93920,25.52,0.0 is seen in 90, 97, 914
所以在一个简单的层面上可以识别第二个内部的重复项?的“列”
[['1','10'],['2','50'],['3','10'],['4','0'],['5','50']]
并为我提供:
Output:
10 is seen in 1, 3
50 is seen in 2, 5
我尝试了以下方法,但现在我很纠结,想知道我是否应该改用字典。正如您可能知道的那样,我对python相当陌生。我在这里的论坛上找不到任何关于比较二维列表中某个位置的特定项目的内容(这让我想知道使用字典)
for idx, (route,mcoords) in enumerate(endcoordlist):
#print(idx, route, coords)
if any(mcoords in coords for idx, (route,coords) in enumerate(endcoordlist)):
print(idx, route, coords)
任何帮助将不胜感激。
更新:感谢 sushanth 提供代码。为了便于阅读/像我这样的菜鸟,我对其进行了一些调整,以了解发生了什么。
for v in endcoordlist:
if groups.get(v[1]):
print(v[0]," is a duplicate with coordinates:",v[1])
groups[v[1]].append(v[0])
else:
groups[v[1]] = [v[0]]
print(v[1]," is unique")
for k, v in groups.items():
print(f"{k} seen in {','.join(v)}")
【问题讨论】:
标签: python list duplicates position 2d