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

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

我有两个二维列表,其中有大量行,并且两个列表的大小长度不同。我在 df1 和 df2 的每个子列表中查找匹配时遇到问题。假设我想在 df2 中找到 df1 的匹配项,我想返回匹配值和不匹配值。它可能会转换为 3d 列表,然后我想删除括号并将其转换回 2d 列表。如果有一种方法可以转换为 2d 列表而不先转换为 3d 列表,那将对我有很大帮助。

这是一个简短的例子(我的二维列表)

 df1 = [[1, 7, 3, 5], [2, 5, 14, 10]]
 df2 = [[1, 17, 3, 5], [34, 14, 74], [34, 3, 87], [25, 14, 10]]

转换为 3d 列表。

 match = [[[1,3,5], [],[3], []], [[5],[14], [], [10,14]]]
 no_match = [[[17], [], [34,87], []], [[1,3,17], [34,74], [], [25]]]

期望结果(删除括号并转换回二维列表)。

 match = [[1,3,5], [3], [5], [14], [14,10]]
 no_match = [[17], [34,87], [1,3,17], [34,74], [25]]
python multidimensional-array
1个回答
0
投票

您也许可以使用嵌套循环在字典中进行迭代:

matches = []
no_matches = []

for sublist1 in df1:
    for sublist2 in df2:
        match = [val for val in sublist1 if val in sublist2]
        no_match = [val for val in sublist2 if val not in sublist1]
        
        if match: matches.append(match)
        if no_match: no_matches.append(no_match)

print("matches:", matches)
print("no matches:", no_matches)
© www.soinside.com 2019 - 2024. All rights reserved.