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