我有一个元组列表:
tple_list = [('4', '4', '1', 'Bart', 'Simpson'),
('1', '2', '6', 'Lisa', 'Simpson'),
('6', '3', '4', 'Homer', 'Simpson'),
('2', '3', '1', 'Hermione', 'Nobody'),
('1', '2', '3', 'Bristol', 'Palace')]
我想用他们的姓氏对它们进行排序。如果两个学生的姓氏相同,那么我想用名字搜索。怎么样?
感谢。
========================
所以,到目前为止,我已经得到了这个:
tple_list.sort(key=operator.itemgetter(4), reverse=False)
这将获取列表并按姓氏对其进行排序。我有相同姓氏的人,所以如果他们的姓氏相同,我如何按他们的名字排序?
答案 0 :(得分:0)
使用Python operator module中的itemgetter
按任意顺序使用多个索引进行排序。
from operator import itemgetter
tple_list = [('4', '4', '1', 'Bart', 'Simpson'),
('1', '2', '6', 'Lisa', 'Simpson'),
('6', '3', '4', 'Homer', 'Simpson'),
('2', '3', '1', 'Hermione', 'Nobody'),
('1', '2', '3', 'Bristol', 'Palace')]
tple_list.sort(key=itemgetter(4, 3)) # lastname, firstname
print(tple_list)
输出
[('2', '3', '1', 'Hermione', 'Nobody'),
('1', '2', '3', 'Bristol', 'Palace'),
('4', '4', '1', 'Bart', 'Simpson'),
('6', '3', '4', 'Homer', 'Simpson'),
('1', '2', '6', 'Lisa', 'Simpson')]