基于第三个参数对元组列表进行排序

时间:2017-07-24 08:07:16

标签: python operators

我的清单以及我认为的正确方法

import operator

my_list = [('green', 'Josef', 22), ('red', 'Marin', 25), ('black', 'Ostoja', 10), ('white', 'Drazen', 11),('purple','Mike',9)]
print (type(my_list))
cpsorted = my_list.sort(key=operator.itemgetter(2))
print (cpsorted)

但是我得到了什么

<class 'list'>
None

为什么?

2 个答案:

答案 0 :(得分:3)

list.sort对列表进行排序。检查my_list

>>> my_list
[('purple', 'Mike', 9), ('black', 'Ostoja', 10), ('white', 'Drazen', 11), ('green', 'Josef', 22), ('red', 'Marin', 25)]
>>> help(list.sort)
...
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;

答案 1 :(得分:3)

如果您不想对列表进行排序,可以使用sorted。此外,您只需使用lambda作为密钥 - 无需导入任何内容。

my_list = [('green', 'Josef', 22), ('red', 'Marin', 25), ('black', 'Ostoja', 10), ('white', 'Drazen', 11),('purple','Mike',9)]
print (type(my_list))
cpsorted = sorted(my_list, key=lambda tup: tup[2])
print (cpsorted)