【问题标题】:complex nested list comprehensions, PEP8复杂的嵌套列表推导,PEP8
【发布时间】:2016-02-25 02:55:14
【问题描述】:

假设我有这样的代码:

questions = [{
    "title": q.title,
    "votes": q.get_total_votes(),
    "options": [{
        "title": o.title,
        "votes": o.votes
    } for o in q.get_options()]
} for q in queue.get_questions()]

但大多数 PEP8 示例都说我应该这样写:

questions = [{"title": q.title,
              "votes": q.get_total_votes(),
              "options": [{"title": o.title, "votes": o.votes}
                          for o in q.get_options()]}
             for q in queue.get_questions()]

第二个版本更可取/更易读吗?或者,列表推导式可能不是最好的方法,我应该这样做

questions = []
for q in queue.get_questions():
    options = []
    for o in q.get_options():
        options.append({"title": o.title, "votes": o.votes})
    questions.append({"title": q.title,
                      "votes": q.get_total_votes(),
                      "options": options})

【问题讨论】:

    标签: python coding-style list-comprehension


    【解决方案1】:

    PEP8 方式是最好的,它不仅可读,而且将来你可以很容易地修改它。第一种方法也是可读的,但不是很好,因为不是所有的键都排列得很好,而且你必须用标签嵌套你的选项键,另外,如果你用较小的终端查看它(如果你使用 vim 或任何终端编辑器)然后这会很烦人。只是我的想法。

    【讨论】:

      【解决方案2】:

      我会这样写,我认为它更具可读性:

      questions = [{"title": q.title,
                    "votes": q.get_total_votes(),
                    "options": [{"title": o.title, "votes": o.votes}
                                  for o in q.get_options()]}
                  for q in queue.get_questions()]
      

      【讨论】:

        猜你喜欢
        • 2012-08-09
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 2019-08-18
        • 2016-03-26
        • 1970-01-01
        相关资源
        最近更新 更多