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

Python:为什么我会得到不同的排序结果,python,Python,我正在尝试编写一个函数,其中是一个字典,它的值是元组,并根据元组中的值对它们进行排序。然而,我感到困惑 如果我跑 return sorted(mydict.values(), key=lambda x:x[0]) 它按我想要的顺序返回所有内容,但它不返回我需要的字典键 所以我试着运行这个: return sorted(mydict.items(), key=lambda x:x[1]) 但是顺序变得不同了 就排序而言,这两个调用之间有什么区别?第一个调用仅按值的第一个元素排序,而第二个调用按

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

如果我跑

return sorted(mydict.values(), key=lambda x:x[0])
它按我想要的顺序返回所有内容,但它不返回我需要的字典键

所以我试着运行这个:

return sorted(mydict.items(), key=lambda x:x[1])
但是顺序变得不同了


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

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

如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))

值的作用是什么?
项的作用是什么?当x是值的元素时,
x[0]
中有什么?当x是
项的元素时,
x[1]
中有什么?