Python协议缓冲区中是否有映射字段的复制构造函数?

Python协议缓冲区中是否有映射字段的复制构造函数?,python,protocol-buffers,Python,Protocol Buffers,解释Python中protobuf的大多数用例,但不解释如何将一个映射复制到另一个映射 给定简单地图 message Src { map<string, string> properties = 1; ... } message Dst { map<string, string> properties = 1; ... } 也没有实现,因为map本身不是消息,而是消息中的字段 # Will not work. dst = Dst() d

解释Python中protobuf的大多数用例,但不解释如何将一个映射复制到另一个映射

给定简单地图

message Src {
    map<string, string> properties = 1;
    ...
}

message Dst {
    map<string, string> properties = 1;
    ...
}
也没有实现,因为map本身不是消息,而是消息中的字段

# Will not work.
dst = Dst()
dst.properties.CopyFrom(src.properties)
我也不能复制整个消息,因为我只想要地图

# Copies unwanted fields!
dst = Dst()
dst.CopyFrom(src)
我希望我不必迭代所有键并逐个分配

# Iterate over map keys
for key in src.properties:
    dst.properties[key] = src.properties[key]

python protobuf生成的代码中的映射字段的操作与python dict非常类似,因此您可以使用.update()复制:

dst.properties.update(src.properties)

你试过从哪里来?我很想知道什么有效这实际上不起作用:ValueError:直接分配子消息不允许这个解决方案对我有效,我的地图是。也许你的类型还有其他问题?
dst.properties.update(src.properties)