Я пытался добавить значения в ScalarMapContainer в Python. Этот объект был автоматически сгенерирован библиотекой Google Protobuf3 из .proto:
map<string, string> mapName = 4;
Согласно скудным документам, я обнаружил, что ScalarMapContainer должен работать в основном как обычный dict
, но не.
Я пытался получить к нему доступ как обычный дикт Я глубоко скопировал это, затем назвал MergeFrom на копии. Я также создал новый ScalarMapConatiner, который затем называется MergeFrom, на нем.
# normal dict
x.mapName["key"] = "value"
from google.protobuf.json_format import MessageToJson
print(MessageToJson(x)) # key/value not present
# deep copy
copy = deepcopy(x.mapName)
copy["key"] = "value"
x.mapName.MergeFrom(copy)
print(MessageToJson(x)) # key/value not present
# new object
myMap = ScalarMapContainer()
myMap["key"] = "value"
x.mapName.MergeFrom(myMap) # crashes
Я не уверен, что еще можно попытаться заставить это работать.
Спасибо.