我的结构看起来像这样
d= { 'image0' : [(image0, image1, 31.58), (image0, image2, 31.56), (image0, image3, 54.65)], 'image2' : [(image0, image2, 31.56), (image1, image2, 45.87), (image2, image3, 14.25)] ...}
我希望它按键排序,然后按每个元组的最后一个元素排序。 基本上,我想要这样的想法:
d= { 'image0' : [(image0, image2, 31.56), (image0, image1, 31.58), (image0, image3, 54.65)], 'image2' : [(image2, image3, 14.25), (image0, image2, 31.56),(image1, image2, 45.87)] ...}
我有一个列表liste_im=[image0, image2]
所以我写了这个:
a={}
for i in range(len(liste_im)):
a=sorted(d[str(liste_im[i])], key=lambda x: x[1][2])
但它不起作用:它给了我这个结果:
[(image0, image2, 31.56), (image2, image1, 45.87), (image2, image3, 14.25)]
,所以我尝试了这个:
a=d.items()
for i in range(len(liste_im)):
a.sort(key=lambda x:x[1][i][2])
它给了我这个:
[('image0',[(image0, image2, 31.56), (image0, image1, 31.58), (image0, image3, 54.65)]), ('image2',[(image2, image3, 14.25), (image0, image2, 31.56),(image1, image2, 45.87)])]
只是我字典中的一个列表,但没有排序,而是有a.sort(...)
我希望有人可以帮助我 谢谢
答案 0 :(得分:1)
我认为你的问题在于你的lambda函数,看起来比索引的索引要多得多。
无论如何,由于d['imagex']
会返回您的元组列表,这意味着您可以使用.sort(..)
在其上调用key = lambda x: x[2]
。如下所示:
for itemKey in d:
d[itemKey].sort(key = lambda x: x[2])
答案 1 :(得分:1)
您需要先对值进行排序,然后对键(项目)进行排序:
from operator import itemgetter
for v in d.values():
v.sort(key=itemgetter(2))
a = sorted(d.items())