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]
中有什么?