我正在进行一项练习,我们将矩阵添加到一起。在给出的字典中,键中的第一个数字是行,键中的第二个数字是列,第三个数字是给定坐标的值:
matrix1={(2, 2): 5, (1, 2): 4, (0, 1): 2, (0, 0): 1, (1, 1): 3, (2, 3): 6}
matrix2={(0, 1): 1, (0, 2): 2, (1, 2): 3, (1, 3): 4, (2, 0): 6, (2, 3): -6}
什么代码会将它们加在一起,以便彼此相等的坐标/键组合在一起,而其他坐标/键只是为了这个输出而聚集在一起:
matrix1+2={(0, 0): 1, (0, 1): 3, (0, 2): 2, (1, 1): 3, (1, 2): 7, (1, 3): 4, (2, 0): 6, (2, 2): 5, (2, 3): 0}
答案 0 :(得分:1)
您可以将字典对象切换为计数器对象,添加计数器,然后将其作为字典返回。这将做你想要的。
>>> from collections import Counter
>>> matrix1 = Counter(matrix1)
>>> matrix2 = Counter(matrix2)
>>> matrix1.update(matrix2)
Counter({(1, 2): 7, (2, 0): 6, (2, 2): 5, (1, 3): 4, (0, 1): 3, (1, 1): 3, (0, 2): 2, (0, 0): 1, (2, 3): 0})
>>> matrix = dict(matrix1)
答案 1 :(得分:1)
稍微简单一些:
d = defaultdict(lambda: 0, matrix2)
for pos, value in matrix1.items():
d[pos] += value