問題很小,但是調了很長時間bug。
主要是字典巢狀字典的時候,第二層字典必須每次迴圈都要重新定義一下,否則會出現每一次迴圈會使用當前的字典值覆蓋之前所有的第二層字典值。主要可能是因為定義的是乙個字典位址,每一次訪問都是訪問的位址,所以造成位址上的賦值同步更新。
sum_gray_dict是我定義的第一層字典,gray_dict是我定義的第二層字典。
gray_dict =
sum_gray_dict =
# 獲取imgl中的多個影象相對應defect和normal區域的灰度值
for point_area_coor_index, point_area_coor in
enumerate
(points_area_coor)
:# 對多個區域進行遍歷
#print(points_label[point_area_coor_index])
for index, img_name in
enumerate
(imgl)
:# 遍歷影象列表
#print(img_name)
for locviewan in locationviewangle:
# 遍歷已知的位置列表
if locviewan.split(
'_')[0
]in img_name and locviewan.split(
'_')[1
]in img_name:
#print("locviewan", locviewan, len(point_area_coor))
gray_dict[locviewan]
= getpixelvalueaccocoor(test_path=test_path, img_name=img_name, coordinate=point_area_coor)
sum_gray_dict[points_label[point_area_coor_index]
]= gray_dict
for i in
range
(point_area_coor_index+1)
:print
(i,len
(sum_gray_dict[points_label[i]][
'high_down'])
)
執行程式:
輸出的是當前迴圈之前更新的後的值,可見出現了覆蓋異常情況。
將gray_dict = {} 放在第一層迴圈中,就可以解決,實在是沒有意識到這個問題。
sum_gray_dict =
# 獲取imgl中的多個影象相對應defect和normal區域的灰度值
for point_area_coor_index, point_area_coor in
enumerate
(points_area_coor)
:# 對多個區域進行遍歷
#print(points_label[point_area_coor_index])
gray_dict =
for index, img_name in
enumerate
(imgl)
:# 遍歷影象列表
#print(img_name)
for locviewan in locationviewangle:
# 遍歷已知的位置列表
if locviewan.split(
'_')[0
]in img_name and locviewan.split(
'_')[1
]in img_name:
#print("locviewan", locviewan, len(point_area_coor))
gray_dict[locviewan]
= getpixelvalueaccocoor(test_path=test_path, img_name=img_name, coordinate=point_area_coor)
sum_gray_dict[points_label[point_area_coor_index]
]= gray_dict
for i in
range
(point_area_coor_index+1)
:print
(i,len
(sum_gray_dict[points_label[i]][
'high_down'])
)
輸出結果:
可見輸出結果已經不會出現賦值異常問題。
希望能幫到大家。
Python字典巢狀
1 import copy 2 menu 10 程式設計 11,17 伺服器程式設計 18,23 24 網頁設計 31 後端 32353637 38 3940 41 menu copy copy.deepcopy menu 424344 print menu copy.pop 電腦科學與技術 字典巢...
字典 字典巢狀
1 字典是python中的資料型別之 一 唯一一種大括號 鍵值對的資料。2 儲存大量的資料 將資料和資料之間進行關聯。3 通過鍵可以準確的找到值 4 雜湊 可變資料型別就不可雜湊 不可變資料型別可雜湊 5 字典的鍵要求 不可變資料型別 可雜湊 唯一 字典中鍵只能存在乙個 字典的值 任意 重複的話後面...
python 有序字典與巢狀字典
1.ordereddict 有序字典 ordereddict是dict的子類,它記住了內容新增的順序。而普通字典是無序的。普通字典 import collections d dict d a a d b b d c c for k,v in d.items print k,v a ac c b b有...