字典中元组的排序

2024-04-26 03:44:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像这样的结构

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)] ...}

我希望它按键排序,然后按每个元组的最后一个元素排序。 基本上,我想要这样的想法:

^{pr2}$

我有一个列表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(…)

我希望有人能帮助我 谢谢你


Tags: lambdakeyin列表forlen排序range
2条回答

我想你的问题是你的lambda函数,看起来索引太多了。在

不管怎样,由于d['imagex']将返回元组的列表,这意味着您可以用key = lambda x: x[2]对其调用.sort(..)。如下所示:

for itemKey in d:
     d[itemKey].sort(key = lambda x: x[2])

您需要先对值排序,然后对键(项):

from operator import itemgetter   
for v in d.values():
    v.sort(key=itemgetter(2))

a = sorted(d.items())

相关问题 更多 >