Re: [問題] 關於用函數return 字典問題消失

看板Python作者時間8年前 (2017/08/07 09:24), 8年前編輯推噓0(005)
留言5則, 2人參與, 最新討論串2/2 (看更多)
<補上code> 資料描述:我有一個資料夾、裡面有五個子資料夾 五個子資料夾的名稱都是花的名字(類別) 裡面放的是該種花的圖片 (下載網址 http://download.tensorflow.org/example_images/flower_photos.tgz ) 然後這個函數的目的是要把圖片讀進來並分成訓練組、驗證組和測試組三種 ※ 引述《kkagt (乎嘎蝦嘎)》之銘言: 我有一個函數會造出一個字典並將它return 大致長這樣 input_data = '/flower_data' def create_image_list(testing_percentage, validation_percentage): #所有圖片均存在result這個字典裡 #key=類別名稱, value=所有圖片(也是字典) result = {} #獲取所有子目錄 sub_dirs = [x[0] for x in os.walk(input_data)] #得到的第一個目錄是當前目錄 is_root_dir = True for sub_dir in sub_dirs: if is_root_dir: is_root_dir = False continue #獲取所有有效圖片文件 extensions = ['jpg', 'jpeg', 'JPG', 'JPEG'] file_list = [] dir_name = os.path.basename(sub_dir) for extension in extensions: file_glob = os.path.join(input_data, dir_name, '*.' + extension) file_list.extend(glob.glob(file_glob)) if not file_list: continue #利用目錄名稱得到類別名稱 label_name = dir_name.lower() training_images = [] testing_images = [] validation_images = [] for file_name in file_list: base_name = os.path.basename(file_name) chance = np.random.randint(100) if chance < validation_percentage: validation_images.append(base_name) elif chance < (test_percentage + validation_percentage): testing_images.append(base_name) else: training_images.append(base_name) result[label_name] = {'dir': dir_name, 'training': training_images, 'testing': testing_images, 'validation': validation_images} return result 如果我直接執行函數內容可以看到keys長這樣 In[29]: result.keys() Out[29]: dict_keys(['roses', 'sunflowers', 'dandelion', 'tulips', 'daisy']) 但是如果我引用函數後再看keys會變成這樣 In[30]: image_lists = create_image_list(test_percentage, validation_percentage) In[31]: image_lists.keys() Out[31]: dict_keys(['daisy']) 看起來只有最後一個keys被傳回來...其他都不見了 請問這是發生了什麼事....QQ 如果需要把函數完整貼上來麻煩推文跟我說 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.83.205 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1501839350.A.26D.html ※ 編輯: kkagt (220.132.83.205), 08/04/2017 17:52:06

08/04 18:51,
return没寫好吧
08/04 18:51

08/04 21:45,
return有其他寫法...?o.o
08/04 21:45

08/04 22:09,
他的意思是你 return 錯東西吧, 請貼函數內容
08/04 22:09

08/05 01:30,
不好意思 函數要禮拜一才有辦法貼..QQ
08/05 01:30
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.83.205 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1502069074.A.F7A.html ※ 編輯: kkagt (220.132.83.205), 08/07/2017 09:42:34

08/07 10:02, , 1F
那個return縮排還有testing_percentage... 這code應該
08/07 10:02, 1F

08/07 10:02, , 2F
不是現在的code? 不然根本跑不起來
08/07 10:02, 2F

08/07 10:03, , 3F
如果把上面那兩點修過的話 我跑起來倒是沒有你說的問題
08/07 10:03, 3F

08/07 10:07, , 4F
啊啊...return多縮了一格....感謝QQ
08/07 10:07, 4F

08/07 10:08, , 5F
複製貼上的return沒貼好..然後我的code多縮了一格...
08/07 10:08, 5F
文章代碼(AID): #1PXy5Izw (Python)
文章代碼(AID): #1PXy5Izw (Python)