有時,在使用 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。