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

Python和协议缓冲区:如何从重复消息字段中删除元素,python,protocol-buffers,Python,Protocol Buffers,根据协议缓冲区, 我可以通过以下方式将对象添加到重复消息字段: 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 但是: 如何从条中删除条 如何从条中删除第n个条元素 我花了几分钟的时间才正确安装了proto buffer编译器,因此这可能是忽略此问题的充分理由:) 虽

根据协议缓冲区, 我可以通过以下方式将对象添加到重复消息字段:

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
但是:

  • 如何从
    中删除

  • 如何从
    条中删除第n个
    条元素


  • 我花了几分钟的时间才正确安装了proto buffer编译器,因此这可能是忽略此问题的充分理由:)

    虽然文档中没有,但实际上可以像处理普通列表一样处理重复字段。除了它的私有方法外,它还支持
    添加
    扩展
    删除
    排序
    ,并且
    删除
    是您在第一种情况下要查找的:

    foo.bars.remove(bar)
    
    以下是在上述行(由上面的代码定义)之前和之后打印
    foo
    时的输出:

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

    #删除第二个元素
    德福酒吧[1]
    
    以及输出:

    原始foo:
    栅栏{
    i:15
    }
    栅栏{
    i:32
    }
    删除索引位置1:
    栅栏{
    i:15
    }
    

    希望有帮助

    我花了几分钟的时间才正确安装了proto-buffer编译器,因此这可能是我忽略这一点的充分理由:)

    虽然文档中没有,但实际上可以像处理普通列表一样处理重复字段。除了它的私有方法外,它还支持
    添加
    扩展
    删除
    排序
    ,并且
    删除
    是您在第一种情况下要查找的:

    foo.bars.remove(bar)
    
    以下是在上述行(由上面的代码定义)之前和之后打印
    foo
    时的输出:

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

    #删除第二个元素
    德福酒吧[1]
    
    以及输出:

    原始foo:
    栅栏{
    i:15
    }
    栅栏{
    i:32
    }
    删除索引位置1:
    栅栏{
    i:15
    }
    

    希望有帮助

    我不确定这是否是版本问题,但“.remove”删除方法对我不起作用。第二个版本确实有效。我不确定这是否是版本问题,但“.remove”删除方法对我不起作用。第二个版本确实有效。