将不同的列表值添加到 python 中的字典
Appeding different list values to dictionary in python
我有三个列表,其中包含不同的值模式。如果condition.I尝试了以下方法,这应该仅在单个字典内附加特定值,但我从列表中获得了所有值。
class_list = [1,2,3,4,5,6]
boxes = [[0.1,0.2,0.3,0.4],[0.5,0.7,0.8,0.9],[0.7,0.9,0.4,0.2],[0.9,0.7,0.6,0.3],[0.9,0.14,0.6,0.3],[0.9,0.7,0.6,0.13]]
scores = [0.98,0.87,0.97,0.96,0.94,0.92]
k=1;
data = {}
for a in scores:
for b in boxes:
for c in list:
if a >= 0.98:
data[k+1] = {"score":a,"box":b, "class": c } ;
k=k+1;
print("Final_result",data)
也许使用 zip
:
for a,b,c in zip(scores,boxes,class_list):
if a >= 0.98:
data[k+1] = {"score":a,"box":b, "class": c } ;
k=k+1;
print("Final_result",data)
输出:
Final_result {2: {'score': 0.98, 'box': [0.1, 0.2, 0.3, 0.4], 'class': 1}}
编辑:
for a,b,c in zip(scores,boxes,class_list):
if a >= 0.98:
data[k+1] = {"score":a,"box":b, "class": int(c) } ;
k=k+1;
print("Final_result",data)
您正在获取所有值,因为您正在使用所有其他值遍历所有值,即 6x6x6 次。
我明白你的问题,你需要使用的是 Zip 功能。
llist = [1,2,3,4,5,6]
boxes = [[0.1,0.2,0.3,0.4],[0.5,0.7,0.8,0.9],[0.7,0.9,0.4,0.2],[0.9,0.7,0.6,0.3],[0.9,0.14,0.6,0.3],[0.9,0.7,0.6,0.13]]
scores = [0.98,0.87,0.97,0.96,0.94,0.92]
k=1;
data = {}
for a,b,c in zip(scores, boxes, llist):
if a >= 0.98:
data[k] = {"score":a,"box":b, "class": c } ;
k = k + 1
for k in data.keys():
print(k , data[k])
ps: 避免使用关键字命名变量,list 是一个关键字。可能会遇到问题,您甚至可以找到原因。
我有三个列表,其中包含不同的值模式。如果condition.I尝试了以下方法,这应该仅在单个字典内附加特定值,但我从列表中获得了所有值。
class_list = [1,2,3,4,5,6]
boxes = [[0.1,0.2,0.3,0.4],[0.5,0.7,0.8,0.9],[0.7,0.9,0.4,0.2],[0.9,0.7,0.6,0.3],[0.9,0.14,0.6,0.3],[0.9,0.7,0.6,0.13]]
scores = [0.98,0.87,0.97,0.96,0.94,0.92]
k=1;
data = {}
for a in scores:
for b in boxes:
for c in list:
if a >= 0.98:
data[k+1] = {"score":a,"box":b, "class": c } ;
k=k+1;
print("Final_result",data)
也许使用 zip
:
for a,b,c in zip(scores,boxes,class_list):
if a >= 0.98:
data[k+1] = {"score":a,"box":b, "class": c } ;
k=k+1;
print("Final_result",data)
输出:
Final_result {2: {'score': 0.98, 'box': [0.1, 0.2, 0.3, 0.4], 'class': 1}}
编辑:
for a,b,c in zip(scores,boxes,class_list):
if a >= 0.98:
data[k+1] = {"score":a,"box":b, "class": int(c) } ;
k=k+1;
print("Final_result",data)
您正在获取所有值,因为您正在使用所有其他值遍历所有值,即 6x6x6 次。 我明白你的问题,你需要使用的是 Zip 功能。
llist = [1,2,3,4,5,6]
boxes = [[0.1,0.2,0.3,0.4],[0.5,0.7,0.8,0.9],[0.7,0.9,0.4,0.2],[0.9,0.7,0.6,0.3],[0.9,0.14,0.6,0.3],[0.9,0.7,0.6,0.13]]
scores = [0.98,0.87,0.97,0.96,0.94,0.92]
k=1;
data = {}
for a,b,c in zip(scores, boxes, llist):
if a >= 0.98:
data[k] = {"score":a,"box":b, "class": c } ;
k = k + 1
for k in data.keys():
print(k , data[k])
ps: 避免使用关键字命名变量,list 是一个关键字。可能会遇到问题,您甚至可以找到原因。