解析DICOM文件的最简单,最pythonic的方法是什么?
不使用非Python库的本机Python实现将是更受欢迎的.DICOM是数字医疗成像中的标准文件格式(有关更多信息,请查看此处).
有一些C/C++库支持读取(子集)DICOM文件.其中两个或三个甚至都有Python绑定.本机Python解析器可以为我提供两个目的:
假设您已经定义了一个 Python 数据类:
@dataclass
class Marker:
a: float
b: float = 1.0
Run Code Online (Sandbox Code Playgroud)
将值从一个实例复制marker_a到另一个实例的最简单方法是marker_b什么?
这是我尝试实现的目标的示例:
marker_a = Marker(1.0, 2.0)
marker_b = Marker(11.0, 12.0)
# now some magic happens which you hopefully can fill in
print(marker_b)
# result: Marker(a=1.0, b=2.0)
Run Code Online (Sandbox Code Playgroud)
作为边界条件,我不想创建新实例并将其分配给marker_b. 好的,我可以遍历所有定义的字段并一个一个复制值,但我想必须有一种更简单的方法。
我想通过指定如何序列化自定义类(我无法修改或猴子补丁)来序列化此类实例。
这是设置:
# some custom class which I cannot modify
class Custom:
def __init__(self, a, b):
self.a = a
self.b = b
# data I want to serialize
data = [Custom(1, 2), Custom(101, 102)]
Run Code Online (Sandbox Code Playgroud)
下面是我对 JSON 的处理方式:
import json
# helper function to handle the custom class
def default(d):
if isinstance(d, Custom):
return dict(a=d.a, b=d.b)
print(json.dumps(data, default=default))
# expected and actual output: [{"a": 1, "b": 2}, {"a": 101, "b": 102}]
Run Code Online (Sandbox Code Playgroud)
我正在努力寻找等效的解决方案pyyaml:
import yaml
def yaml_equivalent_of_default():
"YOUR SOLUTION GOES …Run Code Online (Sandbox Code Playgroud)