有时,在使用 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)
相关用法
- Python Condition acquire()用法及代码示例
- Python Condition notify()用法及代码示例
- Python Condition notify_all()用法及代码示例
- Python Condition release()用法及代码示例
- Python Condition wait()用法及代码示例
- Python Collections.UserList用法及代码示例
- Python Collections.UserDict用法及代码示例
- Python Collections.UserString用法及代码示例
- Python Complex Number转String用法及代码示例
- Python Calendar itermonthdates()用法及代码示例
- Python Calendar itermonthdays()用法及代码示例
- Python Calendar itermonthdays2()用法及代码示例
- Python Calendar itermonthdays3()用法及代码示例
- Python Calendar itermonthdays4()用法及代码示例
- Python Calendar iterweekdays()用法及代码示例
- Python Calendar monthdatescalendar()用法及代码示例
- Python Calendar monthdays2calendar()用法及代码示例
- Python Calendar monthdayscalendar()用法及代码示例
- Python Calendar yeardatescalendar()用法及代码示例
- Python Calendar yeardays2calendar()用法及代码示例
- Python Calendar yeardayscalendar()用法及代码示例
- Python Celsius转Fahrenheit用法及代码示例
- Python CSV转JSON用法及代码示例
- Python CSV File转PDF File用法及代码示例
- Python CSV转HTML Table用法及代码示例
注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python – Convert Coordinate Dictionary to Matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。