比较两个列表并输出缺失和多余的元素 (Python)

新手上路,请多包涵

我有 2 个前缀列表(已排序),想在 Python 中进行比较,以便我可以输出原始列表中缺少的元素和添加的元素。

例如。

 list1_original = ['1.1.1.1/24','2.2.2.2/24','3.3.3.3/24','4.4.4.4/24']
list2 = ['3.3.3.3/24','4.4.4.4/24','5.5.5.5/24','6.6.6.6/24']

我想比较 2 个列表并输出 list1_original 中的添加/删除元素。 IE:

 1.1.1.1/24, 2.2.2.2/24 = missing
5.5.5.5/24, 6.6.6.6/24 = added

原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

如果给定列表中没有重复项,您可以使用集合及其“-”运算符:

 list1 = ['1.1.1.1/24', '2.2.2.2/24', '3.3.3.3/24', '4.4.4.4/24']
list2 = ['3.3.3.3/24', '4.4.4.4/24', '5.5.5.5/24', '6.6.6.6/24']

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

missing = list(sorted(set1 - set2))
added = list(sorted(set2 - set1))

print('missing:', missing)
print('added:', added)

这打印

missing: ['1.1.1.1/24', '2.2.2.2/24']
added: ['5.5.5.5/24', '6.6.6.6/24']

原文由 ATSTNG 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 sets 您可以比较列表:

 missing = set(list1_original).difference(list2)
added = set(list2).difference(list1_original)

请记住,输出是一个集合。要将输出转换为列表,您可以使用 list(missing)

原文由 rachwa 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题