2017-07-24 70 views
0

我的名单上,我所想的是正确的方式排序列表第三个参数

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 

为什么?

+3

'list.sort'没有返回值(即'None'),它按'到位 –

+0

list'对象克里斯,你需要的是蟒蛇金色徽章。去得到它:) –

回答

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) 
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*; 
+0

或者,调用'sorted(my_list)'获得排序版本的my_list,而不修改'my_list'。 –

相关问题