python - protobuf3,python - 如何将元素设置为 map<string,OtherMessage> 字典?

标签 python protocol-buffers

当我尝试设置 map<string,Y> dict of X 的元素时 引发 ValueError。

"Direct assignment of submessage not allowed"

我的实验代码是

syntax = "proto3";

message X {
  map<string,Y> dict = 1;
}

message Y {
  int32 v = 1;
}

和python代码

x = x_pb2.X()
y = x_pb2.Y()
x.data['a'] = y

然后出现错误

Traceback (most recent call last):
  File "x.py", line 8, in <module>
    x.data['a'] = y
ValueError: Direct assignment of submessage not allowed

我该如何解决这个问题?

最佳答案

我猜这是最佳使用模式

x = x_pb2.X()
x.data['a'].v = 1

另一种选择是使用 CopyFrom

x = x_pb2.X()
y = x_pb2.Y()
y.v=2
x.data['a'].CopyFrom(y)

关于python - protobuf3,python - 如何将元素设置为 map<string,OtherMessage> 字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52583468/

相关文章:

C++ protobuf,ZMQ。客户端-服务器接口(interface)的功能

protocol-buffers - 与 Protobuf 一起使用的日期和时间类型

c++ - 在 C++ 中更改现有 protobuf 消息的元素

python - 带有可点击超链接的 PyQt5 工具提示?

python - 我如何在 cssutils 中捕获 CSSStyleDeclaration 错误

python - 过采样 Numpy 数组(二维)

python - 结合使用 cython 和 gsl

protocol-buffers - 如何区分grpc服务中未提供的数组和空数组?

node.js - 序列化失败(grpc/node)

python - 在 matplotlib pyplot 中将颜色图与 Iris 数据集一起使用会出现错误