我想动态创建一个python对象并添加多个标签:label1,label2,label3等。基于每个labels_list中存在的项目。但是,当我在程序结束时打印我的项目时,它们只有一个label1属性,它实际上是标签列表中的最后一个标签。为什么是这样?我怎样才能动态地将所有这些标签作为属性添加到我的字典中?
item = {}
item['filename'] = file_name
count = 1
label_string = 'label'
label_string += str(count)
for label in labels_list:
item[label_string] = label['Name']
count+=1
print(item)
下面应该工作我想,
item = {}
item['filename'] = file_name
count = 1
label_string_base = 'label'
label_string = label_string_base + str(count)
for label in labels_list:
item[label_string] = label['Name']
count+=1
label_string = label_string_base + str(count)
print(item)
您没有在循环中更新label_string变量。所以你用一个字典键写。一种正确的方法是:
item = {}
item['filename'] = file_name
count = 1
label_string = 'label'
for i, label in enumerate(labels_list):
item[label_string + str(i)] = label['Name']
print(item)
枚举是获取列表并返回对的函数(element_number,element)。 它也可以使用dict理解在一行中编写:
item = { label_string + str(i): label['Name'] for i, label in enumerate(labels_list)}