Python sorted函数实战:列表排序与自定义类比较详解

Dylan
Dylan
发布时间:2026-10-13| 5人浏览过
原创

本文通过具体代码示例,详解Python中sorted函数的使用及自定义类的排序实现。内容涵盖利用key参数按字典元素首字母和年龄排序列表,以及通过重写__lt__方法实现Person类的自定义比较逻辑,帮助读者深入理解Python排序机制。

Python sorted函数基础练习背景

近期在研究Socket编程时,向资深开发者请教遇到了挫折,感觉基础尚不牢固便急于进阶。对方建议先通过文件操作、序列处理等基础练习来巩固理解。以下是根据建议完成的一项基础练习题。

题目一:给定列表datas = [['sherry',19,'female'],['flora',21,'female'],['june',15,'femal']],要求分别依据名字首字母和年龄进行排序并输出结果。

题目二:按照指定的输出格式展示比较结果,需对Person类进行相应补充和完善。


class_mates = {'sherry':[18,'male'],'june':[20,'female'],'flora':[19,'female'],'alina':[21,'male']}
class Person(object):
  def __init__(self,name,age):
  self.name = name
p1 = Person('sherry',20)
p2 = Person('june',20)
if p1<p2:
print('p1:{} less than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))
else:
print('p1:{} gte than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))

看似简单的题目,实际耗时整整一下午才完成(自我反思)。

sorted函数排序实战

题目部分


def get_first(info):
   first_value = info[0][0]
   return first_value
 na = sorted(datas,key=get_first)
 print(na)

 def age_sort(info):
   return info[1]
 print(sorted(datas,key=age_sort))

解答部分


class_mates = {'sherry':[18,'male'],'june':[20,'female'],'flora':[19,'female'],'alina':[21,'male']}
class Person(object):
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def __lt__(self,others):
    if(self.age<others.age):
      return 1
    elif(self.age==others.age): 
      if(self.name[0]<others.name[0]):
        return 1
      else:
        return 0
    return 0
p1 = Person('sherry',20)
p2 = Person('june',20)
if p1<p2:
  print('p1:{} less than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))
else:
  print('p1:{} gte than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))

sorted函数参数详解与自定义类比较

查阅Python官方文档后,总结以下关键知识点。

1、sorted(iterable[, key][, reverse])

该函数返回一个经过重新排序的新列表,包含两个可选的关键字参数(建议通过参数名而非位置指定参数)。

key参数用于定义一个接收单个参数的函数,该函数提取列表中的某个元素作为输入,其返回值将作为排序的关键字。默认值为None,即直接比较列表元素本身。

reverse参数为布尔值。若设为True,则表示将列表元素进行反向排序。

2、关于比较运算符,当使用a<b时,Python会自动调用__lt__(a,b)函数。因此,我们需要在类中重新定义__lt__(self, other)函数,以自定义何时返回True或False。每种类型都有其对应的比较函数,在重新定义时也可以调用其他类型的比较逻辑。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。