2015-10-06 112 views
1

我想写一个函数,其中是取字典谁的值是元组并按元组中的值排序。但是我感到困惑。Python:为什么我得到不同的排序结果

如果我运行

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

它返回我希望它只是它不会返回它的字典键,这是我所需要的一切事物。

所以,我想运行此:

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

但排序变得不同。

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

+0

“values”是做什么的? “物品”是做什么的?当x是'values'的元素时'x [0]中有什么?当x是'items'的元素时'x [1]中有什么? – njzk2

回答

1

第一个只能按第一个元素的值而第二个按整个的值排序。如果你想得到相同的结果,那么你需要删除第一个参数key或修改第二个参数key以另外访问第一个元素。

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)) 
相关问题