代码之家  ›  专栏  ›  技术社区  ›  J A S K I E R

python堆栈溢出(104 if语句)。DEF(X)是优化代码的唯一解决方案吗?

  •  -2
  • J A S K I E R  · 技术社区  · 6 年前

    今天尝试检查路径目录名为的文件。 以前它有效,直到我尝试创建104个if/else语句。

    如何处理这个溢出错误? 更具体的问题是:在Python中,是否只有一种解决方案可以对若干项检查的def(x)进行优化?

    导入TuriCreate as Turi url=“图像/” 数据=turi.image_analysis.load_images(url) 数据[“MoneyType”]=数据[“Path”]。应用(lambda路径: 如果路径中有“ars”, 否则(“ars_2”如果“ars_2”在路径中 否则(“ars_5”如果“ars_5”在路径中 否则(“ars_10”如果“ars_10”在路径中 否则(“ars_20”如果“ars_20”在路径中 否则(“ars_50”如果“ars_50”在路径中 否则(“ars_100”如果“ars_100”在路径中 否则(“ars_200”如果“ars_200”在路径中 否则(“ars_”如果“ars_”在路径中 否则(“ars_1000”如果“ars_1000”在路径中 否则(“aed_5”,如果“aed_5”在路径中 否则(“aed_10”,如果“aed_10”在路径中 否则(“AED U 20”,如果“AED U 20”在路径中 其他(如果路径中为“AED-50”,则为“AED-50”)。 其他(如果路径中为“AED-100”,则为“AED-100”)。 其他(如果路径中为“AED U 200”,则为“AED U 200”)。 否则(“AED_”如果“AED_”在路径中 否则(“aed_1000”,如果“aed_1000”在路径中 否则(“brl_1”如果“brl_1”在路径中 否则(“brl_2”如果“brl_2”在路径中 否则(“brl_5”如果“brl_5”在路径中 否则(“brl_10”如果“brl_10”在路径中 否则(“brl_20”如果“brl_20”在路径中 否则(“brl_50”如果“brl_50”在路径中 否则(“brl_100”如果“brl_100”在路径中 否则(“CLP U 1000”如果“CLP U 1000”在路径中 否则(“CLP U 2000”如果“CLP U 2000”在路径中 否则(“CLP U 5000”如果“CLP U 5000”在路径中 否则(“CLP U 10000”如果“CLP U 10000”在路径中 否则(“CLP U 20000”如果“CLP U 20000”在路径中 否则(“cop_1000”如果“cop_1000”在路径中 否则(“cop_2000”如果“cop_2000”在路径中 否则(“cop_5000”如果“cop_5000”在路径中 否则(“cop_10000”如果“cop_10000”在路径中 否则(“cop_”如果“cop_”在路径中 否则(“cop_50000”如果“cop_50000”在路径中 否则(“cop_100000”,如果“cop_100000”,则在路径中为“cop_100000” 否则(“cuc_1”如果“cuc_1”在路径中 否则(“cuc_3”,如果“cuc_3”在路径中 否则(“cuc_5”,如果“cuc_5”在路径中 否则(“cuc_10”,如果“cuc_10”在路径中 否则(“cuc_20”,如果“cuc_20”在路径中 否则(“cuc_50”如果“cuc_50”在路径中 否则(“cuc_100”如果“cuc_100”在路径中 否则(“cuc_200”,如果“cuc_200”在路径中 否则(“CUC_”如果“CUC_”在路径中 否则(“cuc_1000”如果“cuc_1000”在路径中 否则(“egp_1”如果“egp_1”在路径中 否则(“egp_5”如果“egp_5”在路径中 否则(“egp_10”如果“egp_10”在路径中 否则(“egp_20”如果“egp_20”在路径中 else(“egp_25pt”如果“egp_25pt”在路径中 否则(“egp_50”如果“egp_50”在路径中 否则(“egp_50pt”如果“egp_50pt”在路径中 否则(“egp_100”如果“egp_100”在路径中 否则(“egp_200”如果“egp_200”在路径中 否则(“inr_1”如果“inr_1”在路径中 否则(“inr_2”如果“inr_2”在路径中 否则(“inr_5”如果“inr_5”在路径中 否则(“inr_10”如果“inr_10”在路径中 否则(“inr_20”如果“inr_20”在路径中 否则(“inr_50”如果“inr_50”在路径中 否则(“inr_100”如果“inr_100”在路径中 否则(“inr_200”,如果“inr_200”,路径中为“inr_200” 否则(“INR_”如果“INR_”在路径中 否则(“INR U 2000”,如果“INR U 2000”,路径中为“INR U 2000” 否则(“jod_1”,如果“jod_1”在路径中 否则(“jod_5”如果“jod_5”在路径中 否则(“jod_10”如果“jod_10”在路径中 否则(“jod_20”如果“jod_20”在路径中 否则(“jod_50”如果“jod_50”在路径中 否则(“khr_50”如果“khr_50”在路径中 否则(“khr_100”如果“khr_100”在路径中 否则(“khr_500”如果“khr_500”在路径中 否则(“khr_1000”如果“khr_1000”在路径中 否则(“khr_2000”如果“khr_2000”在路径中 否则(“khr_5000”如果“khr_5000”在路径中 否则(“khr_10000”如果“khr_10000”在路径中 否则(“khr_20000”如果“khr_20000”在路径中 否则(“khr_50000”如果“khr_50000”在路径中 否则(“khr_100000”,如果“khr_100000”,路径中为“khr_100000” 否则(“lak_500”如果“lak_500”在路径中 否则(“lak_1000”如果“lak_1000”在路径中 否则(“lak_2000”如果“lak_2000”在路径中 否则(“lak_5000”如果“lak_5000”在路径中 否则(“lak_”如果“lak_”在路径中 否则(“lak_”如果“lak_”在路径中 否则(“lak_50000”如果“lak_50000”在路径中 否则(“lak_”如果“lak_”在路径中 否则(“Lkr_10”,如果“Lkr_10”在路径中 否则(“LKR U 20”,如果“LKR U 20”在路径中 否则(“Lkr_50”,如果“Lkr_50”在路径中 否则(“Lkr_100”,如果“Lkr_100”在路径中 否则(“LKR U 200”,如果“LKR U 200”在路径中 否则(“LKR U 500”如果“LKR U 500”在路径中 否则(“Lkr_1000”,如果“Lkr_1000”在路径中 否则(“LKR U 2000”,如果“LKR U 2000”在路径中 否则(“LKR U 5000”,如果“LKR U 5000”在路径中 否则(“mad_20”如果“mad_20”在路径中 否则(“mad_50”如果“mad_50”在路径中 否则(“mad_100”如果“mad_100”在路径中 否则(“mad_200”如果“mad_200”在路径中 否则(“mmk_1”如果“mmk_1”在路径中 否则(“mmk_5”如果“mmk_5”在路径中 否则(“mmk_10”如果“mmk_10”在路径中 否则(“mmk_20”,如果“mmk_20”在路径中 否则(“mmk_50”如果“mmk_50”在路径中 否则(“mmk_100”如果“mmk_100”在路径中 否则(“mmk_200”如果“mmk_200”在路径中 否则(“mmk_500”如果“mmk_500”在路径中 否则(“mmk_1000”如果“mmk_1000”在路径中 否则(“mmk_5000”如果“mmk_5000”在路径中 否则(“mmk_10000”如果“mmk_10000”在路径中 否则(“mnt_1”,如果“mnt_1”在路径中 否则(“mnt_5”,如果“mnt_5”在路径中 否则(“mnt_10”,如果“mnt_10”在路径中 否则(“mnt_20”,如果“mnt_20”在路径中 否则(“mnt_50”,如果“mnt_50”在路径中 否则(“mnt_100”如果“mnt_100”在路径中 否则(“mnt_500”如果“mnt_500”在路径中 否则(“mnt_1000”如果“mnt_1000”在路径中 否则(“mnt_5000”如果“mnt_5000”在路径中 否则(“mnt_10000”如果“mnt_10000”在路径中 否则(“mnt_20000”,如果“mnt_20000”在路径中 否则(“mxn_20”,如果“mxn_20”在路径中 否则(“mxn_50”,如果“mxn_50”在路径中 否则(“mxn_100”如果“mxn_100”在路径中 否则(“mxn_200”,如果“mxn_200”在路径中 否则(“mxn_500”如果“mxn_500”在路径中 否则(“mxn_1000”,如果“mxn_1000”在路径中 else(“美元”如果“美元”在路径中 否则(“npr_1”,如果“npr_1”在路径中 否则(“npr_2”如果“npr_2”在路径中 否则(“npr_5”,如果“npr_5”在路径中 否则(“npr_10”,如果“npr_10”在路径中 否则(“npr_20”,如果“npr_20”在路径中 否则(“npr_25”,如果“npr_25”在路径中 否则(“npr_50”,如果“npr_50”在路径中 否则(“npr_100”,如果“npr_100”在路径中 否则(“npr_200”,如果“npr_200”在路径中 否则(“npr_250”如果“npr_250”在路径中 否则(“npr_”如果“npr_”在路径中 否则(“npr_1000”如果“npr_1000”在路径中 否则(“qar_1”,如果“qar_1”在路径中 否则(“qar_5”,如果“qar_5”在路径中 否则(“qar_10”,如果“qar_10”在路径中 否则(“qar_50”,如果“qar_50”在路径中 否则(“qar_100”如果“qar_100”在路径中 否则(“QAR U 500”如果“QAR U 500”在路径中 否则(“rub_5”如果“rub_5”在路径中 否则(“rub_10”如果“rub_10”在路径中 否则(“rub_50”如果“rub_50”在路径中 否则(“rub_100”如果“rub_100”在路径中 否则(“rub_200”如果“rub_200”在路径中 否则(“rub_”如果“rub_”在路径中 否则(“rub_1000”如果“rub_1000”在路径中 否则(“rub_2000”如果“rub_2000”在路径中 否则(“rub_”如果“rub_”在路径中 否则(“20泰铢”,如果“20泰铢”在路径中 否则(“50泰铢”,如果“50泰铢”在路径中 否则(“THB U 100”,如果“THB U 100”在路径中 否则(“泰铢500”,如果“泰铢500”在路径中 否则(“1000泰铢”,如果“1000泰铢”在路径中 否则(“vnd_100”,如果“vnd_100”,路径中为“vnd_100” 否则(“vnd_200”,如果“vnd_200”,路径中为“vnd_200” 否则(“vnd_500”,如果“vnd_500”,路径中为“vnd_500” 否则(“Vnd_1000”,如果“Vnd_1000”在路径中 否则(“vnd_2000”,如果“vnd_2000”在路径中 否则(“vnd_5000”,如果“vnd_5000”,路径中为“vnd_5000” 否则(“Vnd_”如果“Vnd_”在路径中 否则(“Vnd_”如果“Vnd_”在路径中 否则(“vnd_50000”,如果“vnd_50000”,路径中为“vnd_50000”)。 否则(“Vnd_”,如果“Vnd_”,路径中为“Vnd_” 否则(“Vnd_”,如果“Vnd_”,路径中为“Vnd_” 否则(如果路径中为“VND-500000”,则为“VND-500000”)。 “没有”()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))((((()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))。 data.save(“money.sframe”)。 数据。探索() databuffer=turi.sframe(“money.sframe”)。 trainingbuffers,testingbuffers=databuffer.random_split(0.8) model=turi.image_classifier.create(培训缓冲区,target=“moneytype”,model=“resnet-50”) evaluations=model.evaluate(测试缓冲区) 打印评估[“准确性”] model.save(“money.model”)。 model.export ou coreml(“moneyClassifier.mlmodel”)。

    一般来说,有都灵机器学习模块,帮助训练对象分类MLModel。 我收集了15000张图片,现在我试着让它了解这些类别(200多张)。以前我只和5-10一起工作。但是,现在我想知道如何实现100多个类别,因为现在对于if/else语句来说,技术上是不可能的?

    正如我所理解的:好的解决方案是一个循环,但是Internet资源主要使用带有扩展名的文件列表。此外,我同意应该用数据帧来完成,但是如何完成呢?我不理解他们的可能性和有用性。

    如何处理这个溢出错误? 更具体的问题是:在Python中,是否只有一种解决方案可以对若干项检查的def(x)进行优化?enter image description here

    import turicreate as turi
    
    url = "images/"
    data = turi.image_analysis.load_images(url)
    
    data["moneyType"] = data["path"].apply(lambda path: 
                                                     "ARS_1" if "ARS_1" in path
                                                else("ARS_2" if "ARS_2" in path
                                                else("ARS_5" if "ARS_5" in path
                                                else("ARS_10" if "ARS_10" in path
                                                else("ARS_20" if "ARS_20" in path
                                                else("ARS_50" if "ARS_50" in path
                                                else("ARS_100" if "ARS_100" in path
                                                else("ARS_200" if "ARS_200" in path
                                                else("ARS_500" if "ARS_500" in path
                                                else("ARS_1000" if "ARS_1000" in path
    
    else("AED_5" if "AED_5" in path
    else("AED_10" if "AED_10" in path
    else("AED_20" if "AED_20" in path
    else("AED_50" if "AED_50" in path
    else("AED_100" if "AED_100" in path
    else("AED_200" if "AED_200" in path
    else("AED_500" if "AED_500" in path
    else("AED_1000" if "AED_1000" in path
    
    else("BRL_1" if "BRL_1" in path
    else("BRL_2" if "BRL_2" in path
    else("BRL_5" if "BRL_5" in path
    else("BRL_10" if "BRL_10" in path
    else("BRL_20" if "BRL_20" in path
    else("BRL_50" if "BRL_50" in path
    else("BRL_100" if "BRL_100" in path
    
    else("CLP_1000" if "CLP_1000" in path
    else("CLP_2000" if "CLP_2000" in path
    else("CLP_5000" if "CLP_5000" in path
    else("CLP_10000" if "CLP_10000" in path
    else("CLP_20000" if "CLP_20000" in path
    
    else("COP_1000" if "COP_1000" in path
    else("COP_2000" if "COP_2000" in path
    else("COP_5000" if "COP_5000" in path
    else("COP_10000" if "COP_10000" in path
    else("COP_20000" if "COP_20000" in path
    else("COP_50000" if "COP_50000" in path
    else("COP_100000" if "COP_100000" in path
    
    else("CUC_1" if "CUC_1" in path
    else("CUC_3" if "CUC_3" in path
    else("CUC_5" if "CUC_5" in path
    else("CUC_10" if "CUC_10" in path
    else("CUC_20" if "CUC_20" in path
    else("CUC_50" if "CUC_50" in path
    else("CUC_100" if "CUC_100" in path
    else("CUC_200" if "CUC_200" in path
    else("CUC_500" if "CUC_500" in path
    else("CUC_1000" if "CUC_1000" in path
    
    else("EGP_1" if "EGP_1" in path
    else("EGP_5" if "EGP_5" in path
    else("EGP_10" if "EGP_10" in path
    else("EGP_20" if "EGP_20" in path
    else("EGP_25pt" if "EGP_25pt" in path
    else("EGP_50" if "EGP_50" in path
    else("EGP_50pt" if "EGP_50pt" in path
    else("EGP_100" if "EGP_100" in path
    else("EGP_200" if "EGP_200" in path
    
    else("INR_1" if "INR_1" in path
    else("INR_2" if "INR_2" in path
    else("INR_5" if "INR_5" in path
    else("INR_10" if "INR_10" in path
    else("INR_20" if "INR_20" in path
    else("INR_50" if "INR_50" in path
    else("INR_100" if "INR_100" in path
    else("INR_200" if "INR_200" in path
    else("INR_500" if "INR_500" in path
    else("INR_2000" if "INR_2000" in path
    
    else("JOD_1" if "JOD_1" in path
    else("JOD_5" if "JOD_5" in path
    else("JOD_10" if "JOD_10" in path
    else("JOD_20" if "JOD_20" in path
    else("JOD_50" if "JOD_50" in path
    
    else("KHR_50" if "KHR_50" in path
    else("KHR_100" if "KHR_100" in path
    else("KHR_500" if "KHR_500" in path
    else("KHR_1000" if "KHR_1000" in path
    else("KHR_2000" if "KHR_2000" in path
    else("KHR_5000" if "KHR_5000" in path
    else("KHR_10000" if "KHR_10000" in path
    else("KHR_20000" if "KHR_20000" in path
    else("KHR_50000" if "KHR_50000" in path
    else("KHR_100000" if "KHR_100000" in path
    
    else("LAK_500" if "LAK_500" in path
    else("LAK_1000" if "LAK_1000" in path
    else("LAK_2000" if "LAK_2000" in path
    else("LAK_5000" if "LAK_5000" in path
    else("LAK_10000" if "LAK_10000" in path
    else("LAK_20000" if "LAK_20000" in path
    else("LAK_50000" if "LAK_50000" in path
    else("LAK_100000" if "LAK_100000" in path
    
    else("LKR_10" if "LKR_10" in path
    else("LKR_20" if "LKR_20" in path
    else("LKR_50" if "LKR_50" in path
    else("LKR_100" if "LKR_100" in path
    else("LKR_200" if "LKR_200" in path
    else("LKR_500" if "LKR_500" in path
    else("LKR_1000" if "LKR_1000" in path
    else("LKR_2000" if "LKR_2000" in path
    else("LKR_5000" if "LKR_5000" in path
    
    else("MAD_20" if "MAD_20" in path
    else("MAD_50" if "MAD_50" in path
    else("MAD_100" if "MAD_100" in path
    else("MAD_200" if "MAD_200" in path
    
    else("MMK_1" if "MMK_1" in path
    else("MMK_5" if "MMK_5" in path
    else("MMK_10" if "MMK_10" in path
    else("MMK_20" if "MMK_20" in path
    else("MMK_50" if "MMK_50" in path
    else("MMK_100" if "MMK_100" in path
    else("MMK_200" if "MMK_200" in path
    else("MMK_500" if "MMK_500" in path
    else("MMK_1000" if "MMK_1000" in path
    else("MMK_5000" if "MMK_5000" in path
    else("MMK_10000" if "MMK_10000" in path
    
    else("MNT_1" if "MNT_1" in path
    else("MNT_5" if "MNT_5" in path
    else("MNT_10" if "MNT_10" in path
    else("MNT_20" if "MNT_20" in path
    else("MNT_50" if "MNT_50" in path
    else("MNT_100" if "MNT_100" in path
    else("MNT_500" if "MNT_500" in path
    else("MNT_1000" if "MNT_1000" in path
    else("MNT_5000" if "MNT_5000" in path
    else("MNT_10000" if "MNT_10000" in path
    else("MNT_20000" if "MNT_20000" in path
    
    else("MXN_20" if "MXN_20" in path
    else("MXN_50" if "MXN_50" in path
    else("MXN_100" if "MXN_100" in path
    else("MXN_200" if "MXN_200" in path
    else("MXN_500" if "MXN_500" in path
    else("MXN_1000" if "MXN_1000" in path
    
    else("USD" if "USD" in path
    
    else("NPR_1" if "NPR_1" in path
    else("NPR_2" if "NPR_2" in path
    else("NPR_5" if "NPR_5" in path
    else("NPR_10" if "NPR_10" in path
    else("NPR_20" if "NPR_20" in path
    else("NPR_25" if "NPR_25" in path
    else("NPR_50" if "NPR_50" in path
    else("NPR_100" if "NPR_100" in path
    else("NPR_200" if "NPR_200" in path
    else("NPR_250" if "NPR_250" in path
    else("NPR_500" if "NPR_500" in path
    else("NPR_1000" if "NPR_1000" in path
    
    else("QAR_1" if "QAR_1" in path
    else("QAR_5" if "QAR_5" in path
    else("QAR_10" if "QAR_10" in path
    else("QAR_50" if "QAR_50" in path
    else("QAR_100" if "QAR_100" in path
    else("QAR_500" if "QAR_500" in path
    
    else("RUB_5" if "RUB_5" in path
    else("RUB_10" if "RUB_10" in path
    else("RUB_50" if "RUB_50" in path
    else("RUB_100" if "RUB_100" in path
    else("RUB_200" if "RUB_200" in path
    else("RUB_500" if "RUB_500" in path
    else("RUB_1000" if "RUB_1000" in path
    else("RUB_2000" if "RUB_2000" in path
    else("RUB_5000" if "RUB_5000" in path
    
    else("THB_20" if "THB_20" in path
    else("THB_50" if "THB_50" in path
    else("THB_100" if "THB_100" in path
    else("THB_500" if "THB_500" in path
    else("THB_1000" if "THB_1000" in path
    
    else("VND_100" if "VND_100" in path
    else("VND_200" if "VND_200" in path
    else("VND_500" if "VND_500" in path
    else("VND_1000" if "VND_1000" in path
    else("VND_2000" if "VND_2000" in path
    else("VND_5000" if "VND_5000" in path
    else("VND_10000" if "VND_10000" in path
    else("VND_20000" if "VND_20000" in path
    else("VND_50000" if "VND_50000" in path
    else("VND_100000" if "VND_100000" in path
    else("VND_200000" if "VND_200000" in path
    else("VND_500000" if "VND_500000" in path
    
    else "NONE")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) )))))))) )))))))))) ))))) )))))))))) ))))))))) )))))))))) ))))))) ))))) ))))))) )))))))) ))))))))))
    
    data.save("money.sframe")
    data.explore()
    
    dataBuffer = turi.SFrame("money.sframe")
    trainingBuffers, testingBuffers = dataBuffer.random_split(0.8)
    
    model = turi.image_classifier.create(trainingBuffers, target="moneyType", model="resnet-50")
    
    evaluations = model.evaluate(testingBuffers)
    print evaluations["accuracy"]
    
    model.save("money.model")
    
    model.export_coreml("MoneyClassifier.mlmodel")
    

    一般来说,有都灵机器学习模块,帮助训练对象分类MLModel。 我收集了15000张图片,现在我试着让它了解这些类别(200多张)。以前我只和5-10一起工作。但是,现在我想知道如何实现100多个类别,因为现在对于if/else语句来说,技术上是不可能的?

    正如我所理解的:好的解决方案是一个循环,但是Internet资源主要使用带有扩展名的文件列表。此外,我同意应该用数据帧来完成,但是如何完成呢?我不理解他们的可能性和有用性。

    1 回复  |  直到 6 年前
        1
  •  0
  •   J A S K I E R    6 年前

    list = ['enfj','enfp','entj','entp','esfj','esfp','estj','estp','infj','infp','intj','intp','isfj','isfp','istj','istp']
    
    def get_label(path, list=list):
      for psychoType in list:
           if psychoType in path:
               return psychoType
    
    data["psychoType"] = data["path"].apply(get_label)