我有两张这样的单子
found = ['CG', 'E6', 'E1', 'E2', 'E4', 'L2', 'E7', 'E5', 'L1', 'E2BS', 'E2BS', 'E2BS', 'E2', 'E1^E4', 'E5']
expected = ['E1', 'E2', 'E4', 'E1^E4', 'E6', 'E7', 'L1', 'L2', 'CG', 'E2BS', 'E3']
我想找出两个列表之间的差异。
我已经做了
list(set(expected)-set(found))
以及
list(set(found)-set(expected))
分别返回['E3']
和['E5']
。
然而,我需要的答案是:
'E3' is missing from found.
'E5' is missing from expected.
There are 2 copies of 'E5' in found.
There are 3 copies of 'E2BS' in found.
There are 2 copies of 'E2' in found.
欢迎任何帮助/建议!
利用Python ^{} class 和^{} class 而不是滚动您自己的解决方案:
symmetric_difference
:查找一个集合或另一个集合中的元素,但不能同时查找这两个集合中的元素。intersection
:查找与这两组元素相同的元素。difference
:本质上就是从一个集合减去另一个集合代码示例
正在查找对象的副本:this question已被引用。使用该技术可以获得所有重复项,并使用结果
Counter
对象,可以找到多少重复项。例如:collections.Counter类将擅长枚举多集之间的差异:
您可能还对difflib.Differ感兴趣:
你已经回答了前两个问题:
第二个要求您查看列表中的重复项计数,有许多在线解决方案(包括这个:Find and list duplicates in a list?)。
相关问题 更多 >
编程相关推荐