Контрольный список для дублирующих позиций.Если они происходят, следует сохранить только последнее.Кроме того, когда тот же случай происходит позже - PullRequest
0 голосов
/ 09 мая 2019

У меня есть список, представляющий идентификатор, широту и долготу:

someList['1', '20.80684', '25.36993', 
         '2', '20.80989', '25.38879', <--- identical to the one below.
         '2', '20.80989', '25.38879', 
         '1', '20.81292', '25.40722', 
         '2', '20.80989', '25.38879', <--- identical to the ones above.
         '2', '20.90453', '25.45430',
         '...', '...' , '...] 

Я пытаюсь проверить последовательные повторяющиеся позиции для того же идентификатора. То есть если один и тот же идентификатор имеет одинаковые координаты, то я хочу сохранить только последний.

До сих пор я пытался сделать следующее:

counterList = [0,1,2,3,4,5]
counter = np.array(counterList)
newList = []
# While the sixth element is less than the length of someList
while counter[5] < len(someList):
    if (someList[counter[0]] == someList[counter[3]] and 
        someList[counter[1]] == someList[counter[4]] and 
        someList[counter[2]] == someList[counter[5]]):
        counter +=3
    else: 
         newList.extend(   someList[counter[3]],
                           someList[counter[4]],
                           someList[counter[5]]
                       )
         counter +=3

Моя идея состояла в том, чтобы пройтись по списку и посмотреть, был ли FirstID равен Second ID и FirstLat был равен SecondLat, а FirstLon был равен SecondLon. Если это так, добавьте 3 к счетчику, чтобы он взял следующий идентификатор, lat и lon, и проигнорировал этот экземпляр. Если они не равны друг другу, я добавлю их в новый список, т. Е. Первое совпадение будет удалено.

Это действительно работает, если идентификаторы и координаты идентичны приведенным ниже. Но это не работает, если другой экземпляр появится позже в списке, как вы, возможно, поняли.

Мой вопрос: Как я могу убедиться, что последующие появления того же ID / Lat / lon удалят предыдущий? Должен быть более простой способ реализовать это? Я довольно новичок в python и уже потратил много времени на это, поэтому надеюсь, что вы поможете мне с моей проблемой.

...