(這是代碼出現的第 4 天,我已經有了我的星星,但我想更有效地做到這一點)
我有一個像這樣的 3d 矩陣:
[
[
[{22: 0}, {13: 0}, {17: 1}, {11: 1}, {0 : 1}],
[{8 : 0}, {2 : 1}, {23: 1}, {4 : 1}, {24: 1}],
[{21: 1}, {9 : 1}, {14: 1}, {16: 0}, {7 : 1}],
[{6 : 0}, {10: 0}, {3 : 0}, {18: 0}, {5 : 1}],
[{1 : 0}, {12: 0}, {20: 0}, {15: 0}, {19: 0}]
],
[
[{3 : 0}, {15: 0}, {0 : 1}, {2 : 1}, {22: 0}],
[{9 : 1}, {18: 0}, {13: 0}, {17: 1}, {5 : 1}],
[{19: 0}, {8 : 0}, {7 : 1}, {25: 0}, {23: 1}],
[{20: 0}, {11: 1}, {10: 0}, {24: 1}, {4 : 1}],
[{14: 1}, {21: 1}, {16: 0}, {12: 0}, {6 : 0}]
],
[
[{14: 1}, {21: 1}, {17: 1}, {24: 1}, {4 : 1}],
[{10: 0}, {16: 0}, {15: 0}, {9 : 1}, {19: 0}],
[{18: 0}, {8 : 0}, {23: 1}, {26: 0}, {20: 0}],
[{22: 0}, {11: 1}, {13: 0}, {6 : 0}, {5 : 1}],
[{2 : 1}, {0 : 1}, {12: 0}, {3 : 0}, {7 : 1}]
]
]
我想使用 map/sum 函式對這些矩陣之一的所有值求和。這就是我現在擁有的并且有效:
# z is one of those matrices, 0, 1 or 2
soma = 0
for line in matrices[z]: # line is a list of dictionaries
for dic in line: # dic is a dictionary from the list
valor = list(dic.values())[0]
if valor == 0:
soma = list(dic.keys())[0]
我試圖做的事情:
print("soma = ", sum(map(sum, ( (value.values())[0] for value in matrizes[z]))))
這不起作用,我收到此錯誤:Traceback(最近一次通話):
檔案“day4.py”,第 75 行,在 <module> 中
print("part 1 = ", sum(map(sum, ((value.values())[0] for value in matrizes[z]))))
檔案“day4.py”,第 75 行,在 <genexpr> 中
print("part 1 = ", sum(map(sum, ((value.values())[0] for value in matrizes[z]))))
AttributeError: 'list' 物件沒有屬性 'values'
我找到了一篇關于 2d 陣列的帖子,但無法理解如何為 3d 陣列制作它。
我還找到了使用“numpy”的帖子,但我想使用 map 和 sum 函式。
uj5u.com熱心網友回復:
你可以做:
z = 0
soma = sum(map(lambda line: sum(k for d in line for k, v in d.items() if v == 0), matrices[z]))
print(soma) # 163
uj5u.com熱心網友回復:
你可以這樣寫一行:
m = [
[
[{22: 0}, {13: 0}, {17: 1}, {11: 1}, {0 : 1}],
[{8 : 0}, {2 : 1}, {23: 1}, {4 : 1}, {24: 1}],
[{21: 1}, {9 : 1}, {14: 1}, {16: 0}, {7 : 1}],
[{6 : 0}, {10: 0}, {3 : 0}, {18: 0}, {5 : 1}],
[{1 : 0}, {12: 0}, {20: 0}, {15: 0}, {19: 0}]
],
[
[{3 : 0}, {15: 0}, {0 : 1}, {2 : 1}, {22: 0}],
[{9 : 1}, {18: 0}, {13: 0}, {17: 1}, {5 : 1}],
[{19: 0}, {8 : 0}, {7 : 1}, {25: 0}, {23: 1}],
[{20: 0}, {11: 1}, {10: 0}, {24: 1}, {4 : 1}],
[{14: 1}, {21: 1}, {16: 0}, {12: 0}, {6 : 0}]
],
[
[{14: 1}, {21: 1}, {17: 1}, {24: 1}, {4 : 1}],
[{10: 0}, {16: 0}, {15: 0}, {9 : 1}, {19: 0}],
[{18: 0}, {8 : 0}, {23: 1}, {26: 0}, {20: 0}],
[{22: 0}, {11: 1}, {13: 0}, {6 : 0}, {5 : 1}],
[{2 : 1}, {0 : 1}, {12: 0}, {3 : 0}, {7 : 1}]
]
]
s = sum([k for y in m for x in y for z in x for k,v in z.items() if v == 0])
print(s)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375707.html
