我想说:
student_tuples = [ ('john', 'A', 15),
('peter', 'B', 12),
('dave', 'C', 12)]
Run Code Online (Sandbox Code Playgroud)
我如何将它排序为这样:
student_tuples = [('john', 'A', 15), ('dave', 'C', 12), ('peter', 'B', 12)]
Run Code Online (Sandbox Code Playgroud)
我能想到的是:
from operator import itemgetter
sorted(student_tuples, key=itemgetter(2,0), reverse=True)
Run Code Online (Sandbox Code Playgroud)
但是输出将是:
student_tuples = [('john', 'A', 15), ('peter', 'B', 12), ('dave', 'C', 12)]
Run Code Online (Sandbox Code Playgroud)
那不是我想要的.我怎样才能使用itemgetter或其他更简单的方法呢?
Ric*_*dle 10
这样做:
print sorted(student_tuples, key=lambda t: (-t[2], t[0]))
# [('john', 'A', 15), ('dave', 'C', 12), ('peter', 'B', 12)]
Run Code Online (Sandbox Code Playgroud)
编写自己的键获取功能.
student_tuples = [ ('john', 'A', 15), ('peter', 'B', 12), ('dave', 'C', 12)]
def student_key(args):
name, letter, number = args
return (-number, name)
>>> sorted(student_tuples, key=student_key)
[('john', 'A', 15), ('dave', 'C', 12), ('peter', 'B', 12)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |