如何在多个二维列表中仅查找两个匹配项和不匹配项?

问题描述 投票:0回答:1

我有两个二维列表,其中有大量行,并且两个列表的大小长度不同。 我无法在 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]]
python list multidimensional-array jupyter-notebook pycharm
1个回答
0
投票

可能您需要这样的东西(假设每个子列表只有唯一的值):

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))
© www.soinside.com 2019 - 2024. All rights reserved.