Как условно обновить добавленное значение предыдущего итератора? - PullRequest
1 голос
/ 04 апреля 2019

У меня есть list из lists:

   my_list_of_lists =  [['a', 'keep me alone'],
                        ['b', 'keep me alone'],
                        ['c', 'Put me with previous value'],
                         ['d', 'keep me alone']]

Я хочу перебрать my_list_of_lists и объединить значение при предыдущем значении, когда my_list[1] == 'Put me with previous value'.

Желаемый вывод:

my_updated_list_of_lists = [['a', 'keep me alone'], ['bc', 'keep me alone'], ['d', 'keep me alone']]

Я пробовал следующий код, но получаю ошибку IndexError: list index out of range:

n = 0
my_updated_list_of_lists = []
for my_list in my_list_of_lists:
    n = n+1
    if my_list[1] == 'Put me with previous value':
        my_updated_list_of_lists[n-1][0] = my_updated_list_of_lists[n-1][0] + my_list[0]
        continue 
    else:
        my_updated_list_of_lists.append(my_list)

Из-за природы элемента списка Put me with a previous value(это суффикс, и это часть речевой функции, которую я использую). Я не вижу, чтобы она стала первой записью в списке.

Я бы ожидал, что код сломается, если / когда былпроблема, но я даже не могу заставить его работать.

Спасибо за помощь!

1 Ответ

0 голосов
/ 04 апреля 2019

Это должно сделать это.

my_list_of_lists = [['a', 'keep me alone'],
                    ['b', 'keep me alone'],
                    ['c', 'Put me with previous value'],
                    ['d', 'keep me alone']]

my_updated_list_of_lists = []

for i in range(0, len(my_list_of_lists)):

    elem = my_list_of_lists[i]

    #Merge the first element of 2 consecutive items if second item contains Put me with previous value
    if i+1 < len(my_list_of_lists) and my_list_of_lists[i+1][1] == 'Put me with previous value':
        elem[0] = elem[0]+my_list_of_lists[i+1][0]
    #Ignore element containing Put me with previous value
    elif elem[1] == 'Put me with previous value':
        continue
    #Append element to new list
    my_updated_list_of_lists.append(elem)

print(my_updated_list_of_lists)
#[['a', 'keep me alone'], ['bc', 'keep me alone'], ['d', 'keep me alone']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...