Python Generated Code解释了Python中大多数protobuf map fields的使用案例,但没有解释如何将一个地图复制到另一个地图。
给出简单的地图
message Src {
map<string, string> properties = 1;
...
}
message Dst {
map<string, string> properties = 1;
...
}
您无法为嵌入的消息字段分配值,因此无法执行以下操作:
# Will not work.
dst = Dst()
dst.properties = src.properties
也没有CopyFrom的实现,因为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]
答案 0 :(得分:1)
python protobuf生成的代码中的map字段与python dicts非常相似,所以你可以使用.update()来复制:
dst.properties.update(src.properties)