我的代码有问题。
假设我有一个列表:
[name,A,name1,B,name2,name3,C, name5, notname]
我希望循环获取字母A,B和C之后的所有名称。我对应该如何做感到有些困惑。有什么想法吗?
到目前为止,我已经尝试过if语句。如果在循环中检测到A,它将通过i + = 1迭代到下一个索引
所以:
string = ''
for i in range(o, len(list_)):
if(list_[h] == 'A'):
while list_[h]!='B':
string+=list_[h]
i+=1
,但是通过此代码,我获取了其他值。我也想获得B和C下的名字,直到它停在notname
预期的输出是连接字母之间的所有字符串:
A: name1
B: name2name3
C: name5
不惜一切代价排除notname
答案 0 :(得分:0)
不是一般的解决方案,但是您可以尝试
namelist = ['name1','A','name2','B','name3','name4','C', 'name5', 'notname']
alphabets = set(['A','B','C'])
result = {}
start = None
for index, item in enumerate(namelist[:-1]):
if(item in alphabets):
if(start):
result[namelist[start-1]] = ''.join(namelist[start:index])
start = index+1
result[namelist[start-1]] = ''.join(namelist[start:index+1])
print(result)
答案 1 :(得分:0)
尝试一下:
names = ['name','A','name1','B','name2','name3','C', 'name5', 'notname']
keys = ['A','B', 'C']
result={}
current=''
for i in names:
if i in keys:
current = i
result[current] = []
elif current and i!='notname':
result[current].append(i)
那么结果将是:
{'A': ['name1'], 'B': ['name2', 'name3'], 'C': ['name5']}
尝试这样打印:
for k,v in result.items():
print(k +': ' +''.join(v) )