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