我在一本詞典中有兩本詞典:
d = {'A': {}, 'B': {}}
在哪里:
A = {'key1': [[3],[ ],[ ], [ ]], 'key2': [[1,2,3], [ ],[4,5,6],[]], 'key4:' ...}
所以一個 Dictonary 有一個串列,比如長度為 4(=n 在下面),它在某些點有其他資料的串列,它們的長度不一樣。
和乙:
B = {'key1': [[ ],[ ], [ ], [ ]], 'key2': [[7,8,9], [ ],[10,11,12],[]], 'key4:' ...}
所以兩者在單鍵內容上長度相同,鍵的命名相同。現在我想從 B 中減去 A,這樣長度為 n 的串列的 A[key1] 從帶有長度為 n 的串列的 B[key1] 中逐個元素地減去,然后是 key2,依此類推。
新詞典
C = {'key1':[Diff1,Diff2,Diff3,Diffn], 'key2': ...}
因此,如果沒有兩個數字,則差異為 []。
對于示例中的 key2 因此:
C = {...'key2': [[1-7,8-2,3-9],[ ], [4-10,5-11,6-12], []], ...}
(當然計算差值,不顯示)
然后是字典
D = {'key1': [mean(C['key1']), 'key2': mean(C['key2']),...}
必須創建,因此 C 鍵的平均值。
不幸的是,我對字典還沒有那么多經驗,所以我會很感激任何提示。
我撰寫了一個代碼來平均這些值,但是通過這種方式我跳過了差異(我需要)并且它還為串列中的空串列生成警告。
for key, value in d['A'].items():
d['A'][key] = [(np.array(i).mean()) for i in value if not int(len(i)) ==0]
uj5u.com熱心網友回復:
我設法通過使用以下代碼從 B 中減去 A 并將其存盤到 C 中來獲得差異
for key, value in d['A'].items():
difference=[]
for i in range(len(d['A'][key])):
outer=[]
for j in range(len(d['A'][key][i])):
outer.append(d['B'][key][i][j]-d['A'][key][i][j])
difference.append(outer)
d['C'][key]=difference
現在這是我從你的問題中提取的假設字典,用于測驗它是否有效
d={
'A' : {'key1': [[3],[2],[1], [5]], 'key2': [[1,2,3], [2],[4,5,6],[2]]},
'B' : {'key1': [[5],[ 1],[8], [9]], 'key2': [[2,3,11], [11],[8,2,22],[4]]},
'C':{}
}
并使用列印陳述句來檢查輸出。我想你已經弄清楚了平均部分,因此留下了這么多。
Ps:當 A 中的串列元素為空時,您會得到一個空串列作為輸出,而當 B 為空時,它會拋出一個錯誤,可以使用例外處理進行處理。
這是您處理例外的方式:
try:
outer.append(d['B'][key][i][j]-d['A'][key][i][j])
except:
outer.append([])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347794.html
下一篇:格式化要在字典中擬合的陣列的值
