gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:30 26 4
gpt4 key购买 nike

根据一个或多个属性比较两个无序列表的最 pythonic 方法是什么?我很想知道是否有一种 pythonic 方法来确定列表 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()]

关于按属性比较两个无序列表的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com