根据第三个参数对元组列表进行排序[重复]

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

以上是关于根据第三个参数对元组列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

按第二项(整数值)对元组列表进行排序[重复]

如何根据另一个列表对元组列表进行排序

根据元组的值,以不同的顺序对元组列表进行排序。

如何根据另一个列表中元组元素的顺序对元组列表进行排序?

如何根据某些文本标准对元组列表进行分组/存储?

按第二个值对元组列表进行排序,reverse=True,然后按 key,reverse=False