如何获得列表项之间的项目?

时间:2019-01-28 11:35:05

标签: python list

我的代码有问题。

假设我有一个列表:

[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

2 个答案:

答案 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) )