есть лучший способ сделать это ...? Я чувствую, что так много для Не может быть хорошим.Слишком много для X в Y
Обратите внимание, что ListaOnline - это просто список имен пользователей, и эти имена пользователей обычно имеют [] символы в своих псевдонимах. Надеюсь, это не смущает.
ListaOnline = ['[YOLO]someone', 'Another person', 'example']
ListaJugadores = [['[YOLO]someone', ['healer', 'tank']], ['example', ['healer', 'dps']]]
ListaMeta = Lista Meta: ['healer', 'tank', 'dps', 'dps', 'dps', 'support', 'support']
ListaResultado = [['healer', []], ['tank', []], ['dps', []], ['dps', []], ['dps', []], ['support', []], ['support', []]]
for i in ListaOnline: #for each player online
for j in ListaJugadores: #check players in database
if j[0] == i: #and if found
for k in ListaMeta: #for each role in the Meta
for l in j[1]: #for each item in player's roles
if k in l: #if the player has this role
for m in ListaResultado: #for each role in ListaResultado
if k in m: #if the role matches
m[1].append(i) #add player to the list
print(str(ListaResultado))
>>> [['healer', ['[YOLO]someone', 'example']], ['tank', ['[YOLO]someone']], ['dps', ['example']], ['dps', []], ['dps', []], ['support', []], ['support', []]]
Ожидаемый результат - получить список с каждым игроком, добавленным к ролям, которые они сохраняют в базе данных. Списки ListaOnline, ListaJugadores и ListaMeta будут меняться каждый день, поэтому каждый раз, когда этот код запускается, нужно будет проверять наличие новых ролей и заполнять ListaResultado в соответствии с ожидаемыми ролями в мета.
Похоже, что вы должны использовать словари вместо списков списков с ключом в качестве первого элемента списка. – eguaio
С его взглядом ваш код должен быть запущен как работа cron или что-то подобное, правильно ли я понимаю ваше требование? –
Предполагается, что это будет добавлено в качестве команды для бота TeamSpeak. Игроки могут использовать команду для сохранения своих ролей в базе данных. Администратор может использовать другую команду для сохранения разных мета-списков. Администратор может использовать другую команду, которая создает список всех пользователей в Интернете, которые могут вписаться в роль (этот код), а затем бот должен сказать им, какую роль использовать, чтобы сделать наиболее оптимальную композицию, но эта часть еще не закончена. – Saelyth