首页 > 解决方案 > 在 python 中构建字典

问题描述

我有一个需要转换为字典的数据框。我在循环中遍历行,但输出与预期不同,因为每个键可能有多个“框”和“分数”。

pred_boxes = {}
for x, row in df.iterrows():
   l = [row['px1'], row['px2'], row['py1'], row['py2']]
   p = ['scores'] 

   boxes = {'boxes': l, 'scores': p}
   previous_values = pred_boxes.get(row['img_name'], [])
   previous_values.append(boxes)
   pred_boxes[row['img_name']] = previous_values

我得到的结果如下:

pred_boxes={'img_name':[{'boxes':[px1_1, px2_1, py1_1, py2_1], 'scores': [scores_1]},{'boxes':[px1_2, px2_2, py1_2, py2_2], 'scores': [scores_2]}]

我想要的结果是:

pred_boxes={'img_name':{'boxes':[[px1_1, px2_1, py1_1, py2_1],[px1_2, px2_2, py1_2, py2_2]], 'scores': [scores_1, scores_2]}

我想我必须在循环中为每个 img_name (这是关键)创建一个循环,但我不知道如何去做。

如果有人有建议,将极大地帮助您。

标签: pythonloopsdictionary

解决方案


只是改变

previous_values = pred_boxes.get(row['image_name', [])
previous_values.append(boxes)

previous_values = pred_boxes.get(row['image_name', {'boxes':[], 'scores':[]})
previous_values['boxes'].append( l )
previous_values['scores'].append( p )

您根本不需要创建“盒子”字典。


推荐阅读