2017-10-15 67 views
0

我正在研究一個將矩陣添加到一起的練習。在給定的字典,在關鍵的第一個數字是行,關鍵中的第二個數字是列,第三個數字是給定的座標值:(Python初學者)從兩個字典中一起添加座標

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} 
+1

那麼,什麼是問題:) – DonCziken

+0

什麼碼會增加他們在一起,這樣的座標/是彼此相等的結合鍵與其他人只是走到一起的?對於這個輸出: –

回答

1

可以Dictionary對象切換到計數器對象,添加計數器,然後返回像這樣的字典。這將做你想要的。

>>> 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

稍微簡單:

d = defaultdict(lambda: 0, matrix2) 
for pos, value in matrix1.items(): 
    d[pos] += value