如何简化python中的elif代码
我是维斯瓦。我使用elif命令编写了一个简单的代码。 我将分享代码和条件。。。它正在工作。但我正在寻找简化的程序。如果有相同的结果可用的话 输入名称为'AEX_ABC'、'AEX_XXX'、'AEX_YYY'、'CAI_XXX'、'CAI_YYY'……等。, 输出应为AEX_1、AEX_2、AEX_3、CAI_1、CAI_2等 节目:如何简化python中的elif代码,python,Python,我是维斯瓦。我使用elif命令编写了一个简单的代码。 我将分享代码和条件。。。它正在工作。但我正在寻找简化的程序。如果有相同的结果可用的话 输入名称为'AEX_ABC'、'AEX_XXX'、'AEX_YYY'、'CAI_XXX'、'CAI_YYY'……等。, 输出应为AEX_1、AEX_2、AEX_3、CAI_1、CAI_2等 节目: name=(<user input>) AEX,CAI,CAR,CCA,CEL,CLM,CRE,ECH,FAV,FRE
name=(<user input>)
AEX,CAI,CAR,CCA,CEL,CLM,CRE,ECH,FAV,FRE,GMP,INS,ROU,TAR,TAV,UAV,VEH,ERROR=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
name=part._name.split('_')
if name[0]=='AEX':
AEX+=1
i=AEX
elif name[0]=='CAI':
CAI+=1
i=CAI
elif name[0]=='CAR':
CAR+=1
i=CAR
elif name[0]=='CCA':
CAR+=1
i=CCA
elif name[0]=='CEL':
CEL+=1
i=CEL
elif name[0]=='CLM':
CLM+=1
i=CLM
elif name[0]=='CRE':
CRE+=1
i=CRE
elif name[0]=='ECH':
ECH+=1
i=ECH
elif name[0]=='FAV':
FAV+=1
i=FAV
elif name[0]=='FRE':
FRE+=1
i=FRE
elif name[0]=='GMP':
GMP+=1
i=GMP
elif name[0]=='INS':
INS+=1
i=INS
elif name[0]=='ROU':
ROU+=1
i=ROU
elif name[0]=='TAR':
TAR+=1
i=TAR
elif name[0]=='TAV':
TAV+=1
i=TAV
elif name[0]=='UAV':
UAV+=1
i=UAV
elif name[0]=='VEH':
VEH+=1
i=VEH
else:
ERROR+=1
i='error'+str(ERROR)
output=name[0]+i
print(output)
name=()
AEX、CAI、CAR、CCA、CEL、CLM、CRE、ECH、FAV、FRE、GMP、INS、ROU、TAR、TAV、UAV、VEH,误差=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
名称=零件名称拆分(“”)
如果名称[0]=“AEX”:
AEX+=1
i=AEX
elif名称[0]=“CAI”:
CAI+=1
i=CAI
elif名称[0]=“汽车”:
汽车+=1
i=汽车
elif名称[0]=“CCA”:
汽车+=1
i=CCA
elif名称[0]=“CEL”:
CEL+=1
i=CEL
elif名称[0]=“CLM”:
CLM+=1
i=CLM
elif名称[0]=“CRE”:
CRE+=1
i=CRE
elif名称[0]=“ECH”:
ECH+=1
i=ECH
elif名称[0]=“FAV”:
FAV+=1
i=FAV
elif名称[0]=“FRE”:
FRE+=1
i=FRE
elif名称[0]=“GMP”:
GMP+=1
i=GMP
elif名称[0]=“INS”:
INS+=1
i=INS
elif名称[0]=='ROU':
ROU+=1
i=ROU
elif名称[0]=“TAR”:
焦油+=1
i=焦油
elif名称[0]=“TAV”:
TAV+=1
i=TAV
elif名称[0]=“UAV”:
无人机+=1
i=无人机
elif名称[0]=='VEH':
VEH+=1
i=车辆
其他:
错误+=1
i='error'+str(错误)
输出=名称[0]+i
打印(输出)
您可以将其替换为字典查找
stock_indices={<all stock indices:0>}
error=0
try:
stock_indices[input[0]]+=1
except KeyError:
error+=1
股票指数={}
错误=0
尝试:
股票指数[输入[0]]+=1
除KeyError外:
错误+=1
正如杰西·巴克所说,这是一份字典的工作。每当您发现自己创建了一大堆变量名来跟踪一组相关项时,您可能应该改用字典。您可以使用dict
literal来初始化字典,但是当所有项都具有相同的初始值时,可以方便地使用dict.fromkeys
类方法,如下所示
为了缩短代码行,我将键
字符串拆分为两个字符串:Python将自动连接相邻的字符串文本,但我们需要用括号将表达式括起来,以便解析器知道它在多行上继续
keys = ('AEX,CAI,CAR,CCA,CEL,CLM,CRE,ECH,FAV,FRE,'
'GMP,INS,ROU,TAR,TAV,UAV,VEH,ERROR'.split(','))
stock_indices = dict.fromkeys(keys, 0)
def update_stock(name):
key = name.partition('_')[0]
if key not in stock_indices:
key = 'ERROR'
val = stock_indices[key] + 1
stock_indices[key] = val
return key, val
# Test
test = (
'AEX_ABC',
'AEX_XXX',
'AEX_YYY',
'BAD_ZZZ',
'CAI_XXX',
'CAI_YYY',
)
for name in test:
key, val = update_stock(name)
print('{0}_{1}'.format(key, val))
输出
AEX_1
AEX_2
AEX_3
ERROR_1
CAI_1
CAI_2