Python 3.3.2-根据数字对名称列表进行排序
我需要根据姓名的编号对姓名列表进行排序。我拥有的数据示例如下:Python 3.3.2-根据数字对名称列表进行排序,python,sorting,python-3.x,Python,Sorting,Python 3.x,我需要根据姓名的编号对姓名列表进行排序。我拥有的数据示例如下: [['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]] 正常排序可以做到这一点: [['Bob Person', 10], ['Jimmy Dexter', 5], ['Josh Winner', 15], ['Mary Goodsprings', 15]] 我想进行的排序应该基于它们所耦合的最大数量。但是,
[['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
正常排序可以做到这一点:
[['Bob Person', 10], ['Jimmy Dexter', 5], ['Josh Winner', 15], ['Mary Goodsprings', 15]]
我想进行的排序应该基于它们所耦合的最大数量。但是,如果数字相等,那么就应该使用名称。像这样:
[['Josh Winner', 15], ['Mary Goodsprings', 15], ['Bob Person', 10], ['Jimmy Dexter', 5]]
注意玛丽和乔希是如何平手的,但乔希仍然在前面,因为J排在M之前
除了我应该使用
sort()的键
函数
使用-item[1]
按降序排序之外,我几乎不知道如何做这件事
>>> data = [['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
>>> sorted(data, key=lambda item: (-item[1], item[0]))
[['Josh Winner', 15], ['Mary Goodsprings', 15], ['Bob Person', 10], ['Jimmy Dexter', 5]]
使用
-item[1]
按降序排序,编号为item[0]
>>> data = [['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
>>> sorted(data, key=lambda item: (-item[1], item[0]))
[['Josh Winner', 15], ['Mary Goodsprings', 15], ['Bob Person', 10], ['Jimmy Dexter', 5]]
由于Python排序是(这意味着当多个项具有相同的键时保留顺序),因此可以在多次运行中对列表进行排序。最重要的标准在最后
import operator
data = [['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
data.sort()
data.sort(key=operator.itemgetter(1), reverse=True)
由于Python排序是(这意味着当多个项具有相同的键时保留顺序),因此可以在多次运行中对列表进行排序。最重要的标准在最后
import operator
data = [['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
data.sort()
data.sort(key=operator.itemgetter(1), reverse=True)
“正常排序”示例中出现错误,应替换第一项和第二项在“正常排序”示例中出现错误,应替换第一项和第二项