数据类:如何使用asdict()忽略None值?

2024-05-03 01:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

@dataclass
class Car:
    brand: str
    color: str

我怎样才能得到一个忽略None值的dict?比如:

^{pr2}$

Tags: nonecardictclasscolordataclassbrandstr
2条回答

另一个选择是编写一个dict工厂,它将拒绝添加None值并将其传递给asdict方法。 在此处签出代码源https://github.com/python/cpython/blob/master/Lib/dataclasses.py

给你:

from dataclasses import dataclass


@dataclass
class Car:
    brand: str
    color: str


def asdict(o, skip_empty=False):
    return {k: v
            for k, v in o.__dict__.items()
            if not (skip_empty and v is None)}


if __name__ == '__main__':
    c = Car(brand='BMW', color=None)
    print(asdict(c, skip_empty=False))
    print(asdict(c, skip_empty=True))

哪个打印:

^{pr2}$

相关问题 更多 >