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

作者: kkagt (乎嘎蝦嘎)   2017-08-07 09:24:31
<補上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
如果需要把函數完整貼上來麻煩推文跟我說
謝謝
作者: APM99 (血統純正台北人)   2016-08-04 18:51:00
return没寫好吧
作者: kkagt (乎嘎蝦嘎)   2016-08-04 21:45:00
return有其他寫法...?o.o
作者: uranusjr (←這人是超級笨蛋)   2016-08-04 22:09:00
他的意思是你 return 錯東西吧, 請貼函數內容
作者: kkagt (乎嘎蝦嘎)   2016-08-05 01:30:00
不好意思 函數要禮拜一才有辦法貼..QQ
作者: stucode   2017-08-07 10:02:00
那個return縮排還有testing_percentage... 這code應該不是現在的code? 不然根本跑不起來如果把上面那兩點修過的話 我跑起來倒是沒有你說的問題
作者: kkagt (乎嘎蝦嘎)   2017-08-07 10:07:00
啊啊...return多縮了一格....感謝QQ複製貼上的return沒貼好..然後我的code多縮了一格...

Links booklink

Contact Us: admin [ a t ] ucptt.com