Python生成的代码解释了protobuf中大多数使用场景,包括在Python中使用映射字段,但没有说明如何将一个映射复制到另一个映射。
给定一个简单的映射:
我希望不必逐个迭代所有键并逐个分配!
给定一个简单的映射:
message Src {
map<string, string> properties = 1;
...
}
message Dst {
map<string, string> properties = 1;
...
}
你无法给嵌入式消息字段赋值,所以无法进行如下操作:
# Will not work.
dst = Dst()
dst.properties = src.properties
因为 map 不是消息本身,而是消息内的一个字段,所以也没有 CopyFrom 的实现。
# 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]