Python和协议缓冲区:如何从重复的消息字段中删除元素

时间:2012-12-05 15:17:40

标签: python protocol-buffers

相应于协议缓冲区python generated code documentation, 我可以通过这种方式将对象添加到重复的消息字段中:

foo = Foo()
bar = foo.bars.add()        # Adds a Bar then modify
bar.i = 15
foo.bars.add().i = 32       # Adds and modify at the same time

但:

  1. 如何从bar删除bars

  2. 如何从n-th删除bars栏元素?

1 个答案:

答案 0 :(得分:4)

我花了几分钟才能正确安装proto缓冲区编译器,因此可能有理由忽略这一点:)

虽然它不在文档中,但您实际上可以将重复字段视为普通列表。除了其私有方法,它支持addextendremovesortremove是您在第一种情况下寻找的:< / p>

foo.bars.remove(bar)

以上是在上一行(由上面的代码定义)之前和之后打印foo时的输出:

Original foo:
bars {
  i: 15
}
bars {
  i: 32
}

foo without bar:
bars {
  i: 32
}

至于删除nth元素,您可以使用del和要删除的索引位置:

# Delete the second element
del foo.bars[1]

输出:

Original foo:
bars {
  i: 15
}
bars {
  i: 32
}

Removing index position 1:
bars {
  i: 15
}

希望有所帮助!