基于字典在循环中定义变量

Defining variables in a loop based on a dictionary

我正在使用 Python 3.x 和 Pydicom 将 DICOM 转换为 PNG。读取 DICOM header 标签时偶尔会出现错误,导致脚本崩溃。到目前为止,我通过使用如下异常来解决它:

try: studyd = ds.StudyDate
except: studyd = ''
pass
...

这种重复的方法会延长代码。

不幸的是,我通过定义包含 Pydicom header 和目标变量的字典并循环遍历它来优化代码失败。我怎么能用这样的东西来做到这一点:

ds = pydicom.dcmread()
tags = { 'StudyDate': 'studyd', 'Modality': 'modal', 'PatientName': 'patname', etc.}
for key, val in tags.items():
...

试试这个:

ds = pydicom.dcmread()
tags = { 'StudyDate': 'studyd', 'Modality': 'modal', 'PatientName': 'patname', etc.}
header_dict = dict()
for key, val in tags.items():
    header_dict[val] = getattr(ds, key)
print(header_dict)

使用 getattr 获取 header 值并将其存储在针对指定名称的字典中