稀疏矩阵减法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稀疏矩阵减法相关的知识,希望对你有一定的参考价值。
我需要写一个函数,得到一个字典列表(每个字典代表一个稀疏矩阵),并返回一个减法矩阵的字典。
例如:对于列表 [{(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]
答案
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
以上是关于稀疏矩阵减法的主要内容,如果未能解决你的问题,请参考以下文章