Python увеличение значения элемента массива
Вот код
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?
Ответы (1 шт):
Потому что в списке (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]]