Предыдущие значения словаря в списке Python изменяются при добавлении нового элемента в список

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

Для этого я подписываюсь на тему ROS, которая дает мне данные и хранит их в закрытой переменной self._globalLatLong = [0,0],

def locationCallback(self,msg):
    self._globalLatLong[0] = msg.latitude
    self._globalLatLong[1] = msg.longitude

def main():
    rospy.Subscriber("/mavros/global_position/global",NavSatFix ,cameraManagerInstance.locationCallback)

Когда камера запускается, запускается следующее и добавляет значение _globalLatLong в список.

def cameraTriggerCallback(self,msg):
    logInstance = {'latlong':self._globalLatLong}
    self._log.append(logInstance) #add all to log

Я ожидал бы, что каждый словарь в списке будет содержать широту и долготу, определенные для того, когда камера была запущена, то есть различные значения для каждой записи (что-то похожее):

[{'latlong': [47.3976091, 8.5455942]}, {'latlong': [47.3976092, 8.5455943]}, {'latlong': [47.3976091, 8.5455944]}] 

Но вместо этого я получаю список, в котором каждый словарь совпадает с последним добавленным словарем (то есть каждый элемент в списке одинаков):

#Camera trigger 1:
[{'latlong': [47.3976084, 8.5455941]}]
#Camera trigger 2:
[{'latlong': [47.3976088, 8.5455941]}, {'latlong': [47.3976088, 8.5455941]}]
#Camera trigger 3:
[{'latlong': [47.3976091, 8.5455942]}, {'latlong': [47.3976092, 8.5455943]}, {'latlong': [47.3976091, 8.5455944]}]

Более того, мне удалось исправить мою проблему, используя немного другой синтаксис:

 logInstance = {'latlong':[self._globalLatLong[0],self._globalLatLong[1]]}

Есть идеи, что может быть причиной этого? Я попробовал то же самое со значениями высоты и времени, и у меня не было проблем. Большое спасибо.

Изменить: решено, была проблема с изменением значений в _globalLatLong вместо того, чтобы создавать новый список, смотрите: Python: почему мой список меняется, когда я на самом деле не изменяю его?

0 ответов

Другие вопросы по тегам