Как получить ключ, значение из списка словарей на python

#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 для значения