我是viswa。我使用elif命令准备了一个简单的代码。 我将分享代码和条件......它正在发挥作用。但我正在寻找简化的程序。如果有任何相同的结果可用
输入名称=' AEX_ABC',' AEX_XXX',' AEX_YYY',' CAI_XXX'' CAI_YYY&#39 ;....等等。, 输出应为AEX_1,AEX_2,AEX_3,CAI_1,CAI_2,......
程序:
||
答案 0 :(得分:3)
您可以使用字典查找替换它。
stock_indices={<all stock indices:0>}
error=0
try:
stock_indices[input[0]]+=1
except KeyError:
error+=1
答案 1 :(得分:1)
正如Jesse Bakker所说,这是一本字典的工作。每当您发现自己创建一大堆变量名来跟踪一组相关项时,您应该使用字典代替。您可以使用dict
文字来初始化字典,但是当所有项目具有相同的初始值时,使用dict.fromkeys
类方法很方便,如下图所示。
为了保持代码行的简短,我将keys
字符串拆分为两个字符串: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