我有以下词典,我想根据其x坐标的方式进行排序,以便我可以通过颜色布置(以不同的订单中的RGB)识别"信标"。我一直试图像列表一样对其进行整理,但这并不是很好。预先感谢:)
Beacon2 = {
'r': [998.9282836914062, 367.3825378417969],
'b': [985.82373046875, 339.2225646972656],
'g': [969.539794921875, 369.2041931152344]
}
对于此特定词典,预期的结果为
sortedBeacon = {
'g': [969.539794921875, 369.2041931152344],
'b': [985.82373046875, 339.2225646972656],
'r': [998.9282836914062, 367.3825378417969]
}
请注意,通常无法分类字典。您可以使用itemgetter
:
from operator import itemgetter
sorted_d = sorted(d.items(), key=itemgetter(1))
如果您真的想维护订单,请将上述内容包裹在OrderedDict
python中的方法stort()通常在列表和元组上使用,而sorted()更好地用于词典等数据结构。
在这种情况下,使用简单的lambda功能可以帮助您获得想要的东西。
print(sorted(Beacon2.values(), key = lambda x: (x[0]))
您可以尝试以下方法:
from collections import OrderedDict
Beacon2 = {'r': [998.9282836914062, 367.3825378417969], 'b':
[985.82373046875, 339.2225646972656], 'g': [969.539794921875, 369.2041931152344]}
sorted_beacons = sorted(Beacon2.items(), key = lambda x: x[1][0])
>>> print(OrderedDict(sorted_beacons))
OrderedDict([('g', [969.539794921875, 369.2041931152344]), ('b', [985.82373046875, 339.2225646972656]), ('r', [998.9282836914062, 367.3825378417969])])
首先将Beacon2.items()
的元素列表排序,并在每个元组的[1][0]
上应用一个排序键。
请注意,您需要将OrderedDict
包裹为结果,以保留字典的顺序。
如果您只想要这些值,请使用以下方式:
sorted(data.values())
如果要与排序值关联的键,请使用以下方式:
sorted(data, key=data.get)
键和值:
sorted(data.items(), key=lambda x:x[1])
礼貌:按值python