1

所以我有两个 protopc.messages.FieldList。我想计算两个列表中的字段(字段类)之间的对称差异。我尝试执行以下代码。

list1 和 list2 是我的 FieldLists,它们每个都有三个元素。其中两个是相同的,一个是不同的。我希望输出能给我不同的元素。我运行了以下代码。

set1 = set(list1)
set2 = set(list2)
difference = set1 ^ set2

但是,可变差异最终保留了所有六个字段。

当我尝试使用以下方法进行操作时,它按预期工作。

difference = []
for item in list1:
  if item not in list2:
    difference.append(item)

所以我的问题是,Python 如何计算两组之间的对称差异?它是利用相等(通过值)还是使用 in 运算符(通过引用)?还有什么我没有看到的东西在起作用吗?

编辑以添加示例(这受到 protopc 文档的启发):

https://cloud.google.com/appengine/docs/python/tools/protorpc/?csw=1#Adding_Message_Fields

class GetNotesRequest(messages.Message):
    notes= messages.SomeCustomField(1, repeated=true)

我得到的列表来自这些消息容器中的重复字段。

4

0 回答 0