我正在尝试在Python中的字典和列表之间映射值。 我试图计算我在图像中找到的对象数量: 例如,我发现: 正方形:3 矩形:4 椭圆= 2 三角形= 1
现在我将所有这些都按降序附加到列表中。
列表变为:[4,3,2,1]
现在我想以某种方式说“' 4'在列表中对应于'矩形', ' 2'对应于' Oval' 我正在尝试使用字典,但正在努力。
因为,我为多个图像做这个,输出会有所不同。 例如,下一个图像给出结果:
正方形:4 矩形:3 椭圆= 1 三角形= 2
现在列表变为[4,3,1,2]
因此,它应该映射' 4'到正方形而不是矩形
答案 0 :(得分:1)
我使用字典:
# Squares:3 Rectangles:4 Oval=2 Triangle=1
shapes = {}
shapes["Square"] = 3
shapes["Rectangle"] = 4
shapes["Oval"] = 2
shapes["Triangle"] = 1
print(shapes) # {'Square': 3, 'Oval': 2, 'Triangle': 1, 'Rectangle': 4}
# Sort list of key,value pairs in descending order
pairs = sorted(shapes.items(), key=lambda pair: pair[1], reverse=True)
print(pairs) # [('Rectangle', 4), ('Square', 3), ('Oval', 2), ('Triangle', 1)]
# Get your list, in descending order
vals = [v for k,v in pairs]
print(vals) # [4, 3, 2, 1]
# Get the keys of that list, in the same order
keys = [k for k,v in pairs] # ['Rectangle', 'Square', 'Oval', 'Triangle']
print(keys)
输出:
{'Square': 3, 'Oval': 2, 'Triangle': 1, 'Rectangle': 4} # shapes
[('Rectangle', 4), ('Square', 3), ('Oval', 2), ('Triangle', 1)] # pairs
[4, 3, 2, 1] # vals
['Rectangle', 'Square', 'Oval', 'Triangle'] # keys
对于细心的读者来说,字典根本不是必需的 - 但我想我们不了解的目标还有更多,字典最有意义的地方。