Python仅在For循环中添加字典属性添加列表中的最后一项

问题描述 投票:1回答:2

我想动态创建一个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)    
python dictionary for-loop
2个回答
0
投票

下面应该工作我想,

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)   

0
投票

您没有在循环中更新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)}
© www.soinside.com 2019 - 2024. All rights reserved.