如何使用Python按姓名字母顺序排序列表内的元组
按姓名字母顺序排序元组列表
Python 的 sort() 或 sorted() 函数支持通过 key 参数指定排序依据,你可以用它来指定按元组中的姓名元素(索引为1的位置)排序,替代默认的按第一个元素排序的行为。
方法1:原地修改排序(list.sort())
直接在原列表上完成排序,不会生成新列表:
data = [(1, 'Robert Downey', 40, '+919876543210', 15000), (2, 'Chris Evans', 35, '+919876543201', 30000), (3, 'Paul Rudd', 45, '+919876543021', 25000), (4, 'Tom Hardy', 39, '+919876540321', 40000), (5, 'Christian Bale', 30, '+919876504321', 10000), (6, 'Thomas shelby', 50, '+91234567890', 90000), (7, 'Tony Stark', 45, '+91087654296', 100000)] # 指定排序依据为元组的第二个元素(姓名) data.sort(key=lambda x: x[1]) # 输出排序结果 for item in data: print(item)
方法2:生成新的排序后列表(sorted())
如果不想修改原列表,用 sorted() 会返回一个独立的排序好的列表:
data = [(1, 'Robert Downey', 40, '+919876543210', 15000), (2, 'Chris Evans', 35, '+919876543201', 30000), (3, 'Paul Rudd', 45, '+919876543021', 25000), (4, 'Tom Hardy', 39, '+919876540321', 40000), (5, 'Christian Bale', 30, '+919876504321', 10000), (6, 'Thomas shelby', 50, '+91234567890', 90000), (7, 'Tony Stark', 45, '+91087654296', 100000)] sorted_data = sorted(data, key=lambda x: x[1]) # 输出排序结果 for item in sorted_data: print(item)
进阶:忽略大小写排序
如果需要避免大小写对排序结果的影响(比如让 Thomas shelby 和 Tony Stark 按实际字母顺序排序),可以将姓名转为小写后作为排序依据:
# 原地排序 data.sort(key=lambda x: x[1].lower()) # 或生成新列表 sorted_data = sorted(data, key=lambda x: x[1].lower())
内容的提问来源于stack exchange,提问作者Ashique
相关产品推荐
相关产品推荐

