Python - 矩阵间分组


矩阵间分组是指两组不同的列表,其中第一个元素的子列表被视为公共匹配项。如果找到匹配项,则将第一个元素作为字典的键,其余两个元素用于矩阵分组。在 Python 中,我们有一些内置函数,例如 setdefault()、defaultdict() 和 append() 可用于解决矩阵间分组问题。

让我们来看一个例子。

给定两个列表:

list_1 = [[1, 2], [3, 4], [4, 5], [5, 6]]

list_2 = [[5, 60], [1, 22], [4, 59], [3, 14]]

因此,最终输出结果为 {1: [2, 22], 3: [4, 14], 4: [5, 59], 5: [6, 60]}

语法

以下语法在示例中使用:

setdefault()

setdefault 是 Python 中的内置函数,用于返回具有特定键的元素。

append()

append() 是 Python 中的内置函数,用于在列表末尾插入元素。

defaultdict()

defaultdict() 是 Python 中的内置函数,它会自动生成键值对,其中包含默认值。此函数有助于处理字典中缺失的键。

使用 setdefault() 函数

在以下示例中,程序使用递归函数接受两个不同的列表来计算矩阵间分组。接下来,它将使用空字典来存储最终结果作为输出。继续使用 for 循环迭代并合并两个输入列表,并使用内置函数 setdefault() 和 append() 将键设置为单个元素,并将值对设置为矩阵分组。通过函数返回,它生成结果字典。

示例

def int_grp_matrix(l1, l2):
    result = {}
    for key, value in l1 + l2:
        result.setdefault(key, []).append(value)
    return result
list1 = [[20, 0], [40, 200], [60, 300]]
list2 = [[40, 500], [60, 50], [20, 100]]
res = int_grp_matrix(list1, list2)
print("Inter Matrix grouping result:\n", res)

输出

 Inter Matrix grouping result: 
{20: [0, 100], 40: [200, 500], 60: [300, 50]}

使用 defaultdict() 函数

在以下示例中,我们将从一个递归函数开始,该函数会调用自身并接受两个参数 l1 和 l2 以接收输入列表的值。然后使用内置函数 defaultdict(list),如果第一个元素的输入列表不满足公共匹配项,则处理缺失的键并将其存储在变量 result 中。接下来,它使用 for 循环迭代并连接两个输入列表。然后变量 result 将参数设置为键,对于值对,它将使用内置函数 append() 插入矩阵分组。最后,我们使用函数返回以及内置函数 dict() 将变量 result 的值转换为字典形式。

示例

from collections import defaultdict
def int_grp_matrix(l1, l2):
    result = defaultdict(list)
    for key, value in l1 + l2:
        result[key].append(value)
    return dict(result)
list1 = [[20, 0], [40, 200], [60, 300]]
list2 = [[40, 500], [60, 50], [20, 100]]
res = int_grp_matrix(list1, list2)
print("Inter Matrix grouping result:\n", res)

输出

 Inter Matrix grouping result: 
{20: [0, 100], 40: [200, 500], 60: [300, 50]}

使用字典和列表推导式

在以下示例中,从一个递归函数开始程序,该函数设置了一些条件和操作,例如合并两个不同的列表、空字典、循环和条件语句,以计算矩阵间分组并打印输出。

示例

def int_grp_matrix(l1, l2):
    merge_list = l1 + l2
    result = {}
    for key, val in merge_list:
        if key in result:
            result[key].append(val)
        else:
            result[key] = [val]
    return result
list1 = [[20, 0], [40, 200], [60, 300]]
list2 = [[40, 500], [60, 50], [20, 100]]
res = int_grp_matrix(list1, list2)
print("The result of Inter Matrix Grouping:\n", res)

输出

The result of Inter Matrix Grouping: {20: [0, 100], 40: [200, 500], 60: [300, 50]}

结论

我们知道矩阵分组是字典中值对位置上的一组整数元素。以上示例展示了初始化两个不同的列表,这意味着查找两个列表中第一个元素的公共匹配项,并将此元素转换为字典的键,并使用某些条件将值对设置为矩阵分组。这种类型的程序通常用于解决算法问题陈述。

更新于: 2023年8月14日

89 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告