比较两个列表(值)并返回真/假



我想用一段python代码解决Nodebox3中的一个问题。这是 Nodebox 3 中缺少的功能。这是我的问题:

我想比较两个不同列表的值并创建而不是新的输出列表。新列表应包含列表 1 和列表 2 的详细信息以及比较过程的结果。(对或错(

List1 和 List2 中的数字在列表中存在一次,但它们可能是未排序的,并且在每次加载时位于每个列表的不同位置(索引(。

我的想法比较列表和结果

Values List 1 (Master): App1 
1
2
3
4
5
Values List 2 (Compare to List 1): App2
2
4
Output (list with Header):
App1    App2    CompareResult   
1       0       False
2       2       True    
3       0       False 
4       4       True 
5       0       False 

我尝试自己创建一些代码,但我是编程新手,它没有给我结果,我正在寻找。它只向我显示匹配的数字。仅此而已。也许有人知道我是如何得到错误结果的。

我的代码

def matches_out(list1, list2):
set1 = set(list1)
set2 = set(list2)
# set3 contains all items common to set1 and set2
set3 = set1.intersection(set2)
#return matches
found = []
for match in set3:
found.append(match)
return found

如果有人有想法,谢谢你的帮助。

检查两个列表的交集是正确的,但只有一半的解决方案,因为它只找到匹配项。您还希望报告不匹配,为此您还需要两个列表的并集。

list1 = [1,2,3,4,5]
list2 = [2,4]
matches = set(list1).intersection(list2)
candidates = set(list1).union(list2)
result1 = []  # 1st column of output
result2 = []  # 2nd column of output
for c in sorted(candidates):
result1.append(c if c in list1 else 0)
result2.append(c if c in list2 else 0)
for i in range(len(result1)): 
print ("{0}t{1}t{2}t".format(result1[i], result2[i], result1[i]==result2[i]))

这将产生以下输出:

1   0   False   
2   2   True    
3   0   False   
4   4   True    
5   0   False   

如果相同的数字在列表中多次出现,则不清楚您希望发生什么情况。您的代码忽略重复项,因此我遵循了相同的行。

我会把标题留给你。

编辑:修复了OP报告的剪切粘贴错误。

相关内容

  • 没有找到相关文章

最新更新