Python:为什么我会得到不同的排序结果

2024-04-27 19:39:46 发布

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

我正在尝试编写一个函数,其中是一个字典,它的值是元组,并根据元组中的值对它们进行排序。然而,我感到困惑

如果我跑

return sorted(mydict.values(), key=lambda x:x[0])

它按我想要的顺序返回所有内容,但它不返回我需要的字典键

所以我试着运行这个:

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

但是顺序变得不同了

就排序而言,这两个调用之间有什么区别


Tags: lambdakey函数内容return字典排序顺序
2条回答

正如Ignacio所描述的,您是按项目的整个值进行排序的。您可以使用下面的代码段按键或值进行排序:

import operator
dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

print "Unsorted : %s" %  dict.items()

print "Sorted by key : %s" % sorted(dict.items(), key=operator.itemgetter(0))

print "Sorted by value : %s" % sorted(dict.items(), key=operator.itemgetter(1))

第一个仅按值的第一个元素排序,而第二个按整个值排序。如果希望得到相同的结果,则需要删除第一个元素上的key参数,或者修改第二个元素上的key参数,以额外访问第一个元素

相关问题 更多 >