【问题标题】:Get index of nested for loop获取嵌套for循环的索引
【发布时间】:2019-07-29 16:12:26
【问题描述】:

我有一个 Python 脚本,用于保存 reddit 帖子和每个帖子的前 40 个顶级 cmets。帖子本身和 cmets 保存在两个不同的字典中。

在帖子字典中,我为每个帖子保存从 500 开始的索引值。我还想为每个帖子的每个评论保存索引值。换句话说,每个帖子的每条评论都应该有保存索引值。

在这种情况下,第一篇文章的每条评论的索引值为 500。第二篇文章的每条评论的索引值为 501。第三篇文章的每条评论的索引值为 502。以此类推.等等

索引值适用于帖子。问题在于 cmets。现在,发表 1 条评论 1 获得索引 500,发表 1 条评论 2 获得索引 501,发表 1 条评论 3 获得索引 502 等等。帖子 1 上的所有 cmets 需要有索引 500。帖子 2 上的所有 cmets 需要索引 501 等等.等等

index = 500
for submission in top_subreddit:
    index +=1
    topics_dict["title"].append(submission.title)
    topics_dict["score"].append(submission.score)
    topics_dict["id"].append(index)
    topics_dict["url"].append(submission.url)
    topics_dict["created"].append(submission.created)
    topics_dict["body"].append(submission.selftext)

    comments = submission.comments[:40]

    for comment in comments:
        if isinstance(comment, MoreComments):
            continue
        comments_dict["commentid"].append(index)
        comments_dict["commentbody"].append(comment.body)

【问题讨论】:

  • 你的代码不是已经正确了吗?你说你想为每条评论使用相同的索引值,看起来你正在这样做。有什么问题?你以一种奇怪的方式保存它(一堆并行列表),但它似乎是你想要的。我建议阅读有关 enumerate 的内容(编写 Pythonic 循环并避免手动管理您的 index 值),但除此之外......
  • 不,它不能正常工作。现在,发表 1 条评论 1 获得索引 500,发表 1 条评论 2 获得索引 501,发表 1 条评论 3 获得索引 503 等等。帖子 1 上的所有 cmets 需要有索引 500。帖子 2 上的所有 cmets 需要索引 501 等等.等等
  • 虽然您的代码看起来已经正确,但我建议您使用 comments_dict[index].append(comment.body) 而不是一本字典中的两个不同列表
  • @user715564:那么要么你的缩进错误(帖子和你的实际代码不同),要么你遗漏了相关代码。您只需在一个地方增加index,每次提交一次;否则,您不会显示任何递增 index 的方式。

标签: python python-3.x loops for-loop


【解决方案1】:

避免使用外部变量作为索引号。仅在您对其进行一些操作时才使用它

enumerate


for apples_index, apple in enumerate(apples):
    for mangoes_index, mango in enumerate(mangoes):
        make_juice(apples_index, mangoes_index)

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2020-07-07
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多