Как я могу получить предметы между пунктами списка? - PullRequest
0 голосов
/ 28 января 2019

У меня проблема с моим кодом.

Допустим, у меня есть список:

[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 голосов
/ 28 января 2019

Попробуйте:

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) )
0 голосов
/ 28 января 2019

Не общее решение, но вы можете попробовать

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...