有時,在使用 Python 字典時,我們可能會遇到需要將矩陣元素轉換為其坐標列表的問題。這種問題可能出現在許多領域,包括日常編程和競爭性編程。讓我們討論執行此任務的某些方式。
Input : test_list = [[‘g’, ‘g’, ‘g’], [‘g’, ‘g’, ‘g’]] Output : {‘g’: {(0, 1), (1, 2), (0, 0), (1, 1), (1, 0), (0, 2)}} Input : test_list = [[‘a’, ‘b’, ‘c’]] Output : {‘a’: {(0, 0)}, ‘b’: {(0, 1)}, ‘c’: {(0, 2)}}
方法 #1:使用循環 + enumerate() 上述函數的組合可用於執行此任務。在此,我們在 enumerate() 的幫助下使用暴力提取元素並為其分配索引。
Python3
# Python3 code to demonstrate working of
# Convert Matrix to Coordinate Dictionary
# Using loop + enumerate()
# initializing list
test_list = [['g', 'f', 'g'], ['i', 's', 'g'], ['b', 'e', 's', 't']]
# printing original list
print("The original list is : " + str(test_list))
# Convert Matrix to Coordinate Dictionary
# Using loop + enumerate()
res = dict()
for idx, sub in enumerate(test_list):
for j, ele in enumerate(sub):
if ele in res:
res[ele].add((idx, j))
else:
res[ele] = {(idx, j)}
# printing result
print("The Coordinate Dictionary : " + str(res))
The original list is : [[‘g’, ‘f’, ‘g’], [‘i’, ‘s’, ‘g’], [‘b’, ‘e’, ‘s’, ‘t’]] The Coordinate Dictionary : {‘g’: {(1, 2), (0, 0), (0, 2)}, ‘f’: {(0, 1)}, ‘t’: {(2, 3)}, ‘i’: {(1, 0)}, ‘b’: {(2, 0)}, ‘e’: {(2, 1)}, ‘s’: {(1, 1), (2, 2)}}
時間複雜度:O(n*m),其中 n 是列中值的總數,m 是列表 “test_list” 中行中值的總數。
輔助空間:O(k),其中 k 是列表 “test_list” 的長度。
方法#2:使用setdefault() + 循環 此方法的操作方式與上述類似,不同之處在於setdefault() 減少了 memory 元素值和鍵存在檢查的任務。
Python3
# Python3 code to demonstrate working of
# Convert Matrix to Coordinate Dictionary
# Using setdefault() + loop
# initializing list
test_list = [['g', 'f', 'g'], ['i', 's', 'g'], ['b', 'e', 's', 't']]
# printing original list
print("The original list is : " + str(test_list))
# Convert Matrix to Coordinate Dictionary
# Using setdefault() + loop
res = dict()
for idx, ele in enumerate(test_list):
for j, sub in enumerate(ele):
res.setdefault(sub, set()).add((idx, j))
# printing result
print("The Coordinate Dictionary : " + str(res))
The original list is : [[‘g’, ‘f’, ‘g’], [‘i’, ‘s’, ‘g’], [‘b’, ‘e’, ‘s’, ‘t’]] The Coordinate Dictionary : {‘g’: {(1, 2), (0, 0), (0, 2)}, ‘f’: {(0, 1)}, ‘t’: {(2, 3)}, ‘i’: {(1, 0)}, ‘b’: {(2, 0)}, ‘e’: {(2, 1)}, ‘s’: {(1, 1), (2, 2)}}
時間複雜度:O(n*n),其中 n 是字典中的元素數量。 setdefault() + 循環用於執行任務,需要 O(n*n) 時間。
輔助空間:創建大小為 n 的 O(n) 附加空間,其中 n 是字典中元素的數量。
相關用法
- Python Matrix轉dictionary用法及代碼示例
- Python Matrix轉String用法及代碼示例
- Python Matplotlib.pyplot.tripcolor()用法及代碼示例
- Python Matplotlib.pyplot.subplot_tool()用法及代碼示例
- Python Matplotlib.pyplot.tricontour()用法及代碼示例
- Python Matplotlib.pyplot.show()用法及代碼示例
- Python Matplotlib.pyplot.subplots()用法及代碼示例
- Python Matplotlib.pyplot.tight_layout()用法及代碼示例
- Python Matplotlib.pyplot.twiny()用法及代碼示例
- Python Matplotlib.pyplot.twinx()用法及代碼示例
- Python Matplotlib.pyplot.ion()用法及代碼示例
- Python Matplotlib.pyplot.streamplot()用法及代碼示例
- Python Matplotlib.pyplot.matshow()用法及代碼示例
- Python Matplotlib.axes.Axes.annotate()用法及代碼示例
- Python Matplotlib.axes.Axes.hexbin()用法及代碼示例
- Python Matplotlib.axes.Axes.contourf()用法及代碼示例
- Python Matplotlib.axes.Axes.hist()用法及代碼示例
- Python Matplotlib.axes.Axes.contour()用法及代碼示例
- Python Matplotlib.axes.Axes.plot_date()用法及代碼示例
- Python Matplotlib.axes.Axes.axhline()用法及代碼示例
- Python Matplotlib.axes.Axes.text()用法及代碼示例
- Python Matplotlib.axes.Axes.clabel()用法及代碼示例
- Python Matplotlib.axes.Axes.arrow()用法及代碼示例
- Python Matplotlib.axes.Axes.bxp()用法及代碼示例
- Python Matplotlib.axes.Axes.boxplot()用法及代碼示例
注:本文由純淨天空篩選整理自manjeet_04大神的英文原創作品 Python – Convert Matrix to Coordinate Dictionary。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。