我有以下字典,我想根据他们的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]
}
答案 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()
:
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])
答案 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
包装到结果中以保留字典的顺序。