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


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


有时,在使用 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 是字典中元素的数量。



相关用法


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