我有这种非常棘手的方式来查找不和谐语音通道中的所有用户。
for guild in self.bot.guilds:
for channel in guild.voice_channels:
for member in channel.members:
self.increment_field(member, 'voice_time')
有没有更好的方法
答案 0 :(得分:4)
我想像这样“折叠”一个3D循环的时候,我将其移到了一个生成器函数上,使其具有yield
值,然后将该生成器与平坦的for
循环一起使用以后:
def gen_the_things():
for guild in self.bot.guilds:
for channel in guild.voice_channels:
for member in channel.members:
yield member
for member in gen_the_things():
self.increment_field(member, 'voice_time')
这只是移动大部分,但这并不一定很糟糕。
您可能需要将东西传递给该函数,或使其成为实例方法。为了简洁起见,我在这里保持简单。
答案 1 :(得分:0)
对于我来说,这似乎很合理,当您具有如此深层的数据结构时,这根本不是“ hacky”。