就像是:
for (a,b) in kwargs.iteritems():
if not b : del kwargs[a]
Run Code Online (Sandbox Code Playgroud)
此代码引发异常,因为迭代时更改字典.
我发现另一个字典只有非常漂亮的解决方案:
res ={}
res.update((a,b) for a,b in kwargs.iteritems() if b is not None)
Run Code Online (Sandbox Code Playgroud)
谢谢
我想在调用 asdict() 后忽略默认值
@dataclass
class A:
a: str
b: bool = True
Run Code Online (Sandbox Code Playgroud)
所以如果我打电话
a = A("1")
result = asdict(a, ignore_default=True)
assert {"a": "1"} == result # the "b": True should be deleted
Run Code Online (Sandbox Code Playgroud)