我想用一段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报告的剪切粘贴错误。