我如何通过另一个循环循环字典?

问题描述 投票:0回答:2

我目前正在制作一个遍历json文件中每个条目(subreddit和discord频道ID)的循环。

for subreddit_name, channel_id in available_streams.items():
            get_channel = guild.get_channel(channel_id)
            print(f"{subreddit_name}: #{get_channel}")
            subreddit = reddit.subreddit(subreddit_name)
            for submission in subreddit.stream.submissions():
                try:

                except Exception as e:

第一个循环运行良好(显示了字典中的所有键和值)。但是,当subreddit_name转到下一个for循环时,仅使用第一项,这意味着仅流式传输来自一个subreddit的帖子。我的代码中有什么问题让它仅考虑第一个条目吗?

python bots discord.py reddit praw
2个回答
0
投票

您可以遍历键,然后在循环内分配值

outerDict = dict() # Assume there's more dicts in there like you want
for a in outerDict:
   element_value_inside_outerDict = outerDict.get(a)
   # Some code for whatever you want to do with it
   for b in element_value_inside_outerDict:
       value_inside_innerDict = element_value_inside_outerDict.get(b)

也许会解决


0
投票

如果使用的是PRAW,则不应将流放入循环中。

subreddit.stream.submissions()将继续无限期地传输,并且for循环将永远不会移到下一个项目。

您应尝试使用其他方法,例如异步流式传输或仅从subreddit中检索最后x个帖子。或者,您也可以在满足条件时在第二个循环中使用break。

for subreddit_name, channel_id in available_streams.items():
    get_channel = guild.get_channel(channel_id)
    print(f"{subreddit_name}: #{get_channel}")
    subreddit = reddit.subreddit(subreddit_name)
    for submission in subreddit.new(limit=10):
        try:
            print(submission.title)
        except Exception as e:
            print(f"Couldn't retrieve submission title '{submission}': {e}")
© www.soinside.com 2019 - 2024. All rights reserved.