【问题标题】:How do I loop a dictionary through another loop?如何通过另一个循环循环字典?
【发布时间】:2020-02-20 06:21:24
【问题描述】:

我目前正在创建一个循环,遍历 json 文件中的每个条目(subreddit 和不和谐频道 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 的帖子被流式传输。我的代码中是否有问题使其仅考虑第一个条目?

【问题讨论】:

  • 第二个 for 循环的 bodybis 代码丢失。这个问题要求这部分的帮助。请添加缺少的代码

标签: python bots discord.py reddit praw


【解决方案1】:

如果您使用的是 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}")

【讨论】:

    【解决方案2】:

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

    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)
    
    

    也许这会解决它

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2014-02-20
      • 2023-02-10
      • 2019-08-11
      • 1970-01-01
      相关资源
      最近更新 更多