Найти индекс во вложенном списке и изменить значение по индексу
Суть проблемы такова, ломаю голову третий день, хотя на первый взгляд все просто. Нужно написать бота, который создает список по ЮЗЕР ИД и присваивает к каждому ИД цифру 1. Как только человек с юзер ид из списка пишет сообщение, нужно в списке с его ид заменить 1 на 2 и так далее. Формат списка такой [[56310020, 1], [325425453,1], ........ [245345534534,1]] Первое это юзер ИД второе количество сообщений. Но проблема в том, что когда делаю поиск по ИД, выдает ошибку что такого ИД в списке нет ValueError: 56310020 is not in list, при это программа начинаеться именно с добавления ИД. Помогите разобраться.
import telebot
bot = telebot.TeleBot('.....')
users = []
@bot.message_handler(commands=['start'])
def add(message):
if message.from_user.id not in users:
users.append([message.from_user.id, 1]) #заношу в список юзер ИД и количество сообщений
@bot.message_handler(content_types=['text']) #когда пишет текст
def shet(message):
id = message.from_user.id
if id in users: # проверка на наличие ИД в списке
print(users.index(id)) # найти индекс нужного ИД
bot.polling(none_stop=True)
Ответы (1 шт):
Как было сказано в комментарии, надо искать индекс во вложенных списках, вот так:
id = message.from_user.id
for i, sub in enumerate(users):
if id == sub[0]:
print(i) # индекс юзера, id которого мы искали
Если что-то непонятно по поводу enumerate, все есть в документации.