【发布时间】:2018-12-15 21:15:28
【问题描述】:
所以我正在编写的代码是针对 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)
【问题讨论】:
-
下面的解决方案应该可以工作...你能澄清一下它是否能做你想做的事吗?
-
刚刚进行了编辑,解决方案确实有效,但我觉得应该有更好的方法来做到这一点。
标签: python python-3.x irc