Python 稀疏矩阵减法

Python 稀疏矩阵减法,python,matrix,Python,Matrix,我需要编写一个函数来获取字典列表(每个字典代表一个稀疏矩阵),并返回一个减法矩阵字典 例如:对于列表[{(1,3):2,(2,7):1},{(1,3):6}]它需要返回{(1,3):-4,(2,7):1} 矩阵的大小不必相同,列表可以有两个以上的矩阵,如果减法为0,则不应出现在最终字典中 我成功地得到了-4,但无论我在定义x后写了什么,我都得到了x==-6,我不知道为什么。我想插入-4作为元素的新值 lst = [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6}] def

我需要编写一个函数来获取字典列表(每个字典代表一个稀疏矩阵),并返回一个减法矩阵字典

例如:对于列表
[{(1,3):2,(2,7):1},{(1,3):6}]
它需要返回
{(1,3):-4,(2,7):1}

矩阵的大小不必相同,列表可以有两个以上的矩阵,如果减法为0,则不应出现在最终字典中

我成功地得到了
-4
,但无论我在定义
x
后写了什么,我都得到了
x==-6
,我不知道为什么。我想插入
-4
作为元素的新值

lst = [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6}]
def diff_sparse_matrices(lst):
    result = {}
    for dictionary in lst:
        for element in dictionary:
            if element not in result:
               result[element] = dictionary[element]
            if element in result:
               x = result[element] - dictionary[element]

你想从第一个矩阵中减去所有的矩阵,对吗?没错,我突然有了一个想法,它成功了!非常感谢你@TomShchori-通常会标记帮助您解决问题的答案,或者在解决方案中张贴您自己的答案,并将该答案标记为解决问题的答案。这有助于将来的用户了解这个问题。您仍然需要执行“如果减法为0,则它不应出现在最终字典中”部分,您可以这样做
返回{coords:val for coords,val in result.items()if val}
def diff_sparse_matrices(lst):
    result = lst[0].copy()
    for matrix in lst[1:]:
        for coordinates, value in matrix.items():
            result[coordinates] = result.get(coordinates, 0) - value
            if result[coordinates] == 0:
                del result[coordinates]
    return result
    def diff_sparse_matrices(lst):
    result = lst[0].copy()
    for d in lst[1:]:
        for tup in d:
            if tup in result:
               result[tup] -= d[tup]
            else:
               result[tup] = -d[tup]
    return result