Python 在 for 循环中添加字典属性只会添加列表中的最后一项



我想动态创建一个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、元素(的函数。
也可以使用字典推导写在一行中:

 item = { label_string + str(i): label['Name'] for i, label in enumerate(labels_list)}

最新更新