Pythonic方式按属性比较两个无序列表

麦可

通过一个或多个属性比较两个无序列表的最有效方法是什么?我很想知道是否存在一种Python方式来查找列表A中的每个项目是否存在列表B中的项目,其中列表A中的项目与列表B中的项目在指定属性中匹配。

在我的示例案例中,我在单元测试中有两个.zip文件,并且想测试文件是否匹配,但是我确实在为我的个人工具集寻找一个好的通用解决方案。这是我的第一次尝试:

with ZipFile('A.zip') as old:
with ZipFile('B.zip') as new:
oldFileInfo = old.infolist()

allFound = True
for info in new.infolist():
   matches = [item for item in oldFileInfo if item.CRC == info.CRC and \   
              basename(item.filename) == basename(info.filename) ]
   if len(matches) == 0:
       allFound = False
       break

也许这是微不足道的,但是我还没有找到一种好的方法。

迈克尔的问候

吉里

这很容易,您应该使用集合:

if set(list1).difference(set(list2)):
    # lists are different
    # different_items = set(list1).difference(set(list2))
    pass
else:
    # lists are the same
    pass

您可以将结构转换为可迭代项或列表:

list1 = [(i.CRC, basename(i.filename)) for i in old.infolist()]
list2 = [(i.CRC, basename(i.filename)) for i in new.infolist()]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用Pythonic方法按属性比较两个无序列表的方法

来自分类Dev

比较两个无序列表,并找出pyspark中哪些元素不匹配

来自分类Dev

两个并排相对的无序列表

来自分类Dev

Python:处理两个列表的“ Pythonic”方式是什么?

来自分类Dev

Python:处理两个列表的“ Pythonic”方式是什么?

来自分类Dev

两个列表的点积之和的 Pythonic 方式

来自分类Dev

内联排列无序列表项中的前两个元素,其余各行对齐

来自分类Dev

比较两个对象列表与特定属性上的LINQ

来自分类Dev

根据特定属性比较两个列表

来自分类Dev

根据特定属性比较两个列表

来自分类Dev

如何按属性过滤两个 json 对象列表?

来自分类Dev

检查两个无序序列是否相等

来自分类Dev

Java比较了两个有序列表:预期列表和实际列表

来自分类Dev

比较两个序列是否相等

来自分类Dev

比较两个序列是否相等

来自分类Dev

如何比较列表中两个类属性的两个数据?

来自分类Dev

合并两个无序的通用数组列表

来自分类Dev

如何用无序的字典断言两个列表?

来自分类Dev

是否有一个列表来比较两个列表之间的项目属性?

来自分类Dev

比较两个对象列表并通过比较java 8中两个列表的一个属性形成一个新列表

来自分类Dev

从字母顺序列表中重新排序两个值。枚举/比较器

来自分类Dev

在Java中实现可比较项的两个已排序列表之间的差异

来自分类Dev

greenDAO:相互比较两个属性

来自分类Dev

DataAnnotation比较两个属性

来自分类Dev

CRM ConditionExpression比较两个属性

来自分类Dev

Java:比较两个列表

来自分类Dev

逐项比较两个列表

来自分类Dev

比较两个复杂的列表对象

来自分类Dev

如何比较两个对象列表?

Related 相关文章

热门标签

归档