Python:如何通过提升X坐标值对X和Y坐标的字典进行排序?

时间:2017-12-01 02:01:56

标签: python sorting dictionary

我有以下字典,我想根据他们的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]
} 

4 个答案:

答案 0 :(得分:3)

请注意,字典通常不可排序。您可以使用root = tk.Tk() mainLabel = tk.Label(root, text='How many Emails do you want to create?') root.iconbitmap("C:\\Users\\Hoxton\\Pictures\\Saved Pictures\\download_U8F_icon.ico") mainLabel.pack()

生成内部排序,但不使用任何lambdas
def __init__(self, parent):
    top = self.top = tk.Toplevel(parent)
    top.iconbitmap("C:\\Users\\Hoxton\\Pictures\\Saved Pictures\\download_U8F_icon.ico")
    self.myLabel = tk.Label(top, text='Enter the Amount of Emails you would like to create')
    self.myLabel.pack()

如果您真的想维持秩序,请将上述内容包装在itemgetter

答案 1 :(得分:1)

Python中的方法sort()通常用于列表和元组,而sorted()更适合数据结构(如字典)。

在这种情况下,使用简单的lambda函数可以帮助您获得所需的内容。

print(sorted(Beacon2.values(), key = lambda x: (x[0])) 

答案 2 :(得分:0)

如果您只想要这些值,请使用:

sorted(data.values())

如果您想要与排序值相关联的键,请使用:

sorted(data, key=data.get)

键和值:

sorted(data.items(), key=lambda x:x[1])

礼貌:sort dict by value python

答案 3 :(得分: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]的X坐标上应用排序键。

请注意,您需要将OrderedDict包装到结果中以保留字典的顺序。