Итак, код, над которым я работаю, предназначен для бота IRC, и я хочу реализовать способ ограничения каналов на основе опции сервера CHANLIMIT
.
Параметр CHANLIMIT
представляет собой список ограничений с префиксом и пределом, разделенных :
, но если после :
ничего нет, то ограничения нет.
Решение ниже работает, но я ищу какие-либо улучшения в нем.
result = ['#+:2', '&:']
channels = ['#test1', '#test2', '+test3', '&test4']
prefix_groups = [(prefix, []) for prefix in result]
channel_groups = {k: v for (k, v) in prefix_groups}
for channel in channels:
for group in prefix_groups:
if channel[0] in group[0]:
channel_groups[group[0]].append(channel)
break
for prefix, channels in channel_groups.items():
limit = prefix.split(':')[1]
if limit:
if len(channels) > int(limit):
channel_groups[prefix] = channels[:int(limit)]
channels = [
channel for chanlist in channel_groups.values() for channel in chanlist]
print(channels)