使用简单摘要输出的差异检查
Diff Check With Simple Summary Output
我是 Python 的新手,想编写一个差异检查程序,对两个输入列表(来自文件)执行基本差异检查,然后以摘要形式输出差异。
例如,一些摘要统计数据为:
- A 中有但 B 中没有的列表
- B 中有但 A 中没有的列表
- 每个列表中的重复项数
这将主要用于在网络上进行资产发现协调,因此列表将充满 IP 或主机名。我的主要要求是寻求帮助开始这样做。
如果有人问过这个问题,我深表歉意,但我在这里的任何地方都找不到我特别想做的事情。
谢谢!
对于前两个,您只需进行集合比较即可:
>>> A = ['a', 'b', 'c', 'd', 'a']
>>> B = ['q', 'r', 'b', 'b', 'c']
>>> sorted(set(A) - set(B))
['a', 'd']
>>> sorted(set(B) - set(A))
['q', 'r']
对于第 3 个,您可以使用 collections
库中的 Counter
,它会创建一个字典来计算可迭代项中每个项目的出现次数:
>>> from collections import Counter
>>> {k: v for k, v in Counter(A).items() if v > 1}
{'a': 2}
>>> {k: v for k, v in Counter(B).items() if v > 1}
{'b': 2}
对于 "Anything else that becomes relevant over time" - 你必须更具体!
我是 Python 的新手,想编写一个差异检查程序,对两个输入列表(来自文件)执行基本差异检查,然后以摘要形式输出差异。
例如,一些摘要统计数据为:
- A 中有但 B 中没有的列表
- B 中有但 A 中没有的列表
- 每个列表中的重复项数
这将主要用于在网络上进行资产发现协调,因此列表将充满 IP 或主机名。我的主要要求是寻求帮助开始这样做。
如果有人问过这个问题,我深表歉意,但我在这里的任何地方都找不到我特别想做的事情。
谢谢!
对于前两个,您只需进行集合比较即可:
>>> A = ['a', 'b', 'c', 'd', 'a']
>>> B = ['q', 'r', 'b', 'b', 'c']
>>> sorted(set(A) - set(B))
['a', 'd']
>>> sorted(set(B) - set(A))
['q', 'r']
对于第 3 个,您可以使用 collections
库中的 Counter
,它会创建一个字典来计算可迭代项中每个项目的出现次数:
>>> from collections import Counter
>>> {k: v for k, v in Counter(A).items() if v > 1}
{'a': 2}
>>> {k: v for k, v in Counter(B).items() if v > 1}
{'b': 2}
对于 "Anything else that becomes relevant over time" - 你必须更具体!