当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Coordinate Dictionary转Matrix用法及代码示例


有时,在使用 Python Matrix 时,我们可能会遇到问题,其中我们有以键作为矩阵位置及其值的字典记录,并且我们希望将其转换为实际的矩阵。这可以应用于许多领域,包括竞争性节目和日常节目。让我们讨论执行此任务的某些方式。

方法#1:使用循环+max()+列表理解结合使用上述方法可以解决这个问题。在此,我们使用 max() 获取矩阵的维度,使用列表理解来创建矩阵并使用循环来赋值。

Python3


# Python3 code to demonstrate working of 
# Convert Coordinate Dictionary to Matrix
# Using loop + max() + list comprehension
# initializing dictionary
test_dict = { (0, 1) : 4, (2, 2) : 6, (3, 1) : 7, (1, 2) : 10, (3, 2) : 11}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Convert Coordinate Dictionary to Matrix
# Using loop + max() + list comprehension
temp_x = max([cord[0] for cord in test_dict.keys()])
temp_y = max([cord[1] for cord in test_dict.keys()])
res = [[0] * (temp_y + 1) for ele in range(temp_x + 1)]
for (i, j), val in test_dict.items():
    res[i][j] = val
# printing result 
print("The dictionary after creation of Matrix : " + str(res)) 
输出:

The original dictionary is : {(0, 1): 4, (1, 2): 10, (3, 2): 11, (3, 1): 7, (2, 2): 6} The dictionary after creation of Matrix : [[0, 4, 0], [0, 0, 10], [0, 0, 6], [0, 7, 11]]

时间复杂度:O(n*n),其中n是列表test_list的长度
辅助空间:创建大小为 n 的 O(n) 附加空间,其中 n 是 res 列表中的元素数量

方法 #2:使用列表理解 这是执行此任务的另一种方法。它执行与上述函数类似的任务,不同之处在于它是上述方法的简写。

Python3


# Python3 code to demonstrate working of 
# Convert Coordinate Dictionary to Matrix
# Using list comprehension
# initializing dictionary
test_dict = { (0, 1) : 4, (2, 2) : 6, (3, 1) : 7, (1, 2) : 10, (3, 2) : 11}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Convert Coordinate Dictionary to Matrix
# Using list comprehension
temp_x, temp_y = map(max, zip(*test_dict))
res = [[test_dict.get((j, i), 0) for i in range(temp_y + 1)] 
                                  for j in range(temp_x + 1)]
# printing result 
print("The dictionary after creation of Matrix : " + str(res)) 
输出:

The original dictionary is : {(0, 1): 4, (1, 2): 10, (3, 2): 11, (3, 1): 7, (2, 2): 6} The dictionary after creation of Matrix : [[0, 4, 0], [0, 0, 10], [0, 0, 6], [0, 7, 11]]

使用嵌套循环:

方法:

初始化一个空字典dictionary。
将键值对添加到字典中。键是表示行索引和列索引的元组,值是相应的矩阵元素。
确定矩阵所需的行数和列数。这可以通过从字典的键中查找最大行索引和列索引来完成。
初始化所需大小的zero-filled矩阵。
循环遍历字典的键值对,并将矩阵对应的元素设置为值。

Python3


dictionary = {(0, 1): 4, (1, 2): 10, (3, 2): 11, (3, 1): 7, (2, 2): 6}
rows = max(dictionary, key=lambda x: x[0])[0] + 1
cols = max(dictionary, key=lambda x: x[1])[1] + 1
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
for k, v in dictionary.items():
    matrix[k[0]][k[1]] = v
     
print(matrix)
输出
[[0, 4, 0], [0, 0, 10], [0, 0, 6], [0, 7, 11]]

时间复杂度:O(n^2)
辅助空间:O(n^2)



相关用法


注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python – Convert Coordinate Dictionary to Matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。