将另一个元素添加到字典中

时间:2018-04-03 19:44:33

标签: python

我有一本看起来像这样的字典,

{'023': {'ARTERIAL': {'Age': '043Y'},
  'PORTAL': {'Age': '043Y'},
  'VENOUS': {'Age': '043Y'}},
 '024': {'ARTERIAL': {'Age': '048Y'},
  'PORTAL': {'Age': '048Y'},
  'VENOUS': {'Age': '048Y'}}}

我已经使用此设置了这个,

data_dict={}
for folders in os.listdir(new_path):
    for AVP in os.listdir(os.path.join(new_path, folders)):
        for files in os.listdir(os.path.join(new_path, folders, AVP)):          
            file = dicom.read_file(os.path.join(new_path, folders, AVP, files))
            Name = file.Name
            Age = file.Age
            at = file.AcquisitionNumber
            data_dict.setdefault(folders, {}).setdefault(AVP,{}).setdefault('Age',file.Age)
            break

现在和Age一起,我想在年龄字典中添加更多关键值项目,像这样

{'023': {'ARTERIAL': {'Age': '043Y','number': 43, 'time':12:00},
  'PORTAL': {'Age': '043Y','number': 3, 'time':2:00},
  'VENOUS': {'Age': '043Y','number': 93, 'time':1:00}},

我试过了

data_dict.setdefault(folders, {}).setdefault(AVP,{}).setdefault('Age',file.Age).setdefault(file.AcquisitionNumber, file.AcquisitionNumber)

给了我

 AttributeError: 'str' object has no attribute 'setdefault'

有关如何添加更多键值对的任何建议都会有所帮助, 提前致谢

1 个答案:

答案 0 :(得分:3)

setdefault返回字典元素的值,可以是已存在的字符元素值,也可以是您提供的默认值。前两个setdefault()调用返回嵌套字典,但最后一个返回file.Age,这是一个字符串。

将最后一个字典分配给变量,然后在其中设置所需的值:

d = data_dict.setdefault(folders, {}).setdefault(AVP,{})
d['Age'] = file.Age
d['number'] = file.AcquisitionNumber