我有两个二维列表,其中有大量行,并且两个列表的大小长度不同。 我无法在 df1 和 df2 的每个子列表中仅找到两个匹配项。 假设我想在 df2 中找到 df1 中的两个匹配项,我想返回匹配值和不匹配值。它可能会转换为 3d 列表,然后我想删除括号并将其转换回 2d 列表。如果有一种方法可以转换为 2d 列表而不先转换为 3d 列表,那将对我有很大帮助。
Main List
df1 = [[1, 7, 3, 5], [2, 5, 14, 10], [1,14,25,34,67,74], [2,19,45,65]]
df2 = [[1, 17, 3, 5], [34, 14, 74], [34, 3, 87], [25, 14, 10], [2,19,20,64,25]]
Desire Result (Remove Brackets and convert back to 2d list).
match = [[10,14], [14,25], [14,25], [2,19]]
no_match = [[25], [10],[25], [20,64,25]]
可能您需要这样的东西(假设每个子列表只有唯一的值):
match = []
no_match = []
for i in df1:
for j in df2:
set_i = set(i)
set_j = set(j)
intersection = set_i & set_j
if len(intersection) == 2:
match.append(list(intersection))
no_match.append(list(set_j - set_i))