Python序列化proto中repeated修饰的数据

时间:2022-11-11 21:39:03

一、repeated修饰复合数据结构,即message时

 1、使用message的add方法初始化新实例

 2、分别对新实例中的每个元素赋值;或使用CopyFrom(a)拷贝a中的元素值

 message TechnologyTreeNode{
optional int32 node_id = 1;
optional int32 level = 2;
} message TechnologyTree {
repeated TechnologyTreeNode tree_node_list = 1;
} tt = TechnologyTree()
ttn = tt.tree_node_list.add() # 分别赋值
ttn.node_id = 2
ttn.level = 3 # CopyFrom
tn = TechnologyTreeNode()
tn.node_id = 2
tn.level = 3
ttn.CopyFrom(tn)

二、repeated修饰基础数据类型,如:int等

1、单个元素使用append()追加

2、list使用expend()

message A {
repeated int ids = 1;
}
a = A()
a.ids.append(1)
l = [1, 2, 3]
a.ids.extend(l)

三、删除repeated修饰的数据中元素

del a.ids[index]
or
a.ids.remove(item)

四、清空

del a.ids[:]

or

a.ids.clear()