Python увеличение значения элемента массива

Рейтинг: 0Ответов: 1Опубликовано: 31.01.2023

Вот код

print(arr)
if count == 0:
    arr.append([result, 1])
else:
    for i in range(len(arr)):
        if arr[i][0] == result:
            print("100")
            print(arr[i][0])
            print(type(arr[i][0]))
            print(arr[i][1])
            print(type(arr[i][1]))
            arr[i][1] += 1
            print("200")

Вот результат

[('XX 7777 AA\n', 1)]
100
XX 7777 AA

<class 'str'>
1
<class 'int'>

Process finished with exit code -1073740791 (0xC0000409)

Почему не получается увеличить значение на 1?

Ответы

▲ 5Принят

Потому что в списке (list) под именем arr лежит лишь один элемент и он имеет тип кортеж (tuple), а tuple является неизменяемой структурой данных, его значения нельзя переписать, если бы вы посмотрели какую ошибку выдаёт python, то увидели бы сообщение: "TypeError: 'tuple' object does not support item assignment". Для Ваших целей лучше хранить список списков:

arr = [['XX 7777 AA\n', 1]]

UPD: Как привести к нужному виду большой массив таких данных.
Возможно, что метод получения запросов как-то позволяет получать данные в ином виде, но я не буду углубляться и предложу такой тривиальный метод, с помощью функции map(). Она позволит обойти все элементы списка и привести к нужному виду.

# Полученный набор данных в исходном виде
arr = [
('XX 77 AA', 1),
('YY 65 BC', 2),
('ZY 13 BE', 3)
]

arr = list(map(list, arr))
print(arr)

Вывод: [['XX 77 AA', 1], ['YY 65 BC', 2], ['ZY 13 BE', 3]]