按Python 3中的特定元组元素对元组列表进行排序

时间:2014-11-30 05:03:56

标签: python list search tuples

我有一个元组列表:

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)

这将获取列表并按姓氏对其进行排序。我有相同姓氏的人,所以如果他们的姓氏相同,我如何按他们的名字排序?

1 个答案:

答案 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')]