#python #dictionary #protocol-buffers
Вопрос:
У меня есть список словарей, я пытаюсь получить ключ и значение каждого словаря для присвоения объекту protobuff. Мой пример кода:
from protos.mission_status_msg_pb2 import WaypointStatus
waypoint_status = WaypointStatus()
waypoint_status_list= [{'id': 3, 'status': 0}, {'id': 4, 'status': 0}, {'id': 2, 'status': 0}]
for key, val in payload["waypoint_status_list"].items():
self.logger.debug(key)
self.logger.debug(val)
waypoint_status.id = key
waypoint_status.status = val
#If i remove .items(), it is printing id, status,
#if i add .items , it is giving me this error
'list' object has no attribute 'items'
Мой протофайл
message WaypointStatus
{
/// a unique ID for the waypoint (should match a waypoint in the route list)
required uint32 id = 1;
/// the current status of the waypoint
required WaypointStatusType status = 2; #enum
}
Ответ №1:
Это должно сработать, хотя неясно, что вы пытаетесь сделать:
from protos.mission_status_msg_pb2 import WaypointStatus
waypoint_status = WaypointStatus()
waypoint_status_list= [{'id': 3, 'status': 0}, {'id': 4, 'status': 0}, {'id': 2, 'status': 0}]
for d in waypoint_status_list:
for key, val in d.items():
self.logger.debug(key)
self.logger.debug(val)
waypoint_status.id = key
waypoint_status.status = val
Комментарии:
1. я попробовал даже это , вывод ` идентификатор для ключа ` и ` 3 для значения