Python:如何通过上升x坐标值对x和y坐标的字典进行排序



我有以下词典,我想根据其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

来生成内部分类,但是没有任何lambdas
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

debled

最新更新