【问题标题】:list of dictionary comprehension in PythonPython中的字典理解列表
【发布时间】:2021-09-30 14:40:26
【问题描述】:

我有一堂课叫做 Question。我有一个字典列表,我想将这些数据添加到另一个名为 questions_bank 的列表中。我已经使用 for 循环和 append 方法做到了。但我想使用字典理解来做到这一点。有什么办法吗?

class Question:
    def __init__(self, text, answer):
        self.text = text
        self.answer = answer


data = [
    {
        "question": "question 1",
        "answer": True
    },
    {
        "question": "question 2",
        "answer": False
    }

]
question_bank = []

for value in data:
    question_bank.append(Question(value["text"], value["answer"]))

【问题讨论】:

  • 字典理解不适用于构建列表

标签: python python-3.x list dictionary


【解决方案1】:

dataclass 更清洁

from dataclasses import dataclass

@dataclass
class Question:
        question: str
        answer :bool

data = [
    {
        "question": "question 1",
        "answer": True
    },
    {
        "question": "question 2",
        "answer": False
    }

]
question_bank = [Question(**q) for q in data]
print(question_bank)

输出

[Question(question='question 1', answer=True), Question(question='question 2', answer=False)]

【讨论】:

  • 这对我来说是新事物,但它有效
  • 学习数据类并不是什么新鲜事。这只是在 Python 中定义普通类的一种更简单的方法。
【解决方案2】:

与你的 for 循环等效的列表理解是

>>> question_bank = [Question(i['question'], i['answer']) for i in data]
>>> question_bank
[<__main__.Question object at 0x0000020E4E62E9C8>, <__main__.Question object at 0x0000020E4E6B2888>]

【讨论】:

  • 非常感谢
猜你喜欢
  • 2011-03-14
  • 1970-01-01
  • 2018-03-18
  • 2020-10-18
  • 2022-11-22
  • 2023-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多