根据第三个参数对元组列表进行排序[重复]
Posted
技术标签:
【中文标题】根据第三个参数对元组列表进行排序[重复]【英文标题】:Sort list of tuples based on third parameter [duplicate] 【发布时间】:2017-12-29 17:25:36 【问题描述】:我的清单和我认为正确的方法
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
为什么?
【问题讨论】:
list.sort
不返回任何内容(即None
),它将list
对象排序到位
克里斯,你需要那个蟒蛇金徽章。去拿吧:)
【参考方案1】:
如果您不想就地排序列表,可以使用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)
【讨论】:
【参考方案2】: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*;
【讨论】:
或者,调用sorted(my_list)
获取my_list
的排序版本,而不修改my_list
。以上是关于根据第三个参数对元组列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章