Python中的映射列表和字典

时间:2016-04-22 23:12:37

标签: python list dictionary

我正在尝试在Python中的字典和列表之间映射值。 我试图计算我在图像中找到的对象数量: 例如,我发现: 正方形:3 矩形:4 椭圆= 2 三角形= 1

现在我将所有这些都按降序附加到列表中。

列表变为:[4,3,2,1]

现在我想以某种方式说“' 4'在列表中对应于'矩形', ' 2'对应于' Oval' 我正在尝试使用字典,但正在努力。

因为,我为多个图像做这个,输出会有所不同。 例如,下一个图像给出结果:

正方形:4 矩形:3 椭圆= 1 三角形= 2

现在列表变为[4,3,1,2]

因此,它应该映射' 4'到正方形而不是矩形

1 个答案:

答案 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

对于细心的读者来说,字典根本不是必需的 - 但我想我们不了解的目标还有更多,字典最有意义的地方。