Python 自定义类排序

  • 首先自定义一个类,然后在__init__方法中写入你需要的属性
  • 比如我的Book类,有书名(book_name)和书的价格(book_price)
    这里我希望按照书的价格来排序
  • 核心是使用sorted方法
 sorted(book_list, key=lambda x:x.book_price, reverse=False)
- reverse是反转的意思
- reverse=False 表示升序(1 2 3)
- reverse=True 表示降序(3 2 1)

代码

class Book(object):
    def __init__(self, book_name, book_price):
        self.book_name = book_name
        self.book_price = book_price
    
    # 只是为了输出来展示结果,可写可不写
    def __str__(self):
        return "{name:<15}\t{price:<10}".format(name=self.book_name, price=self.book_price)

def show_book_list(book_list):
    for book in book_list:
        print(book)
    print("\n=====")
    
b1 = Book("百年孤独", 59)
b2 = Book("云边有个小卖部", 49)
b3 = Book("高等数学", 19.9)

book_list = [b1, b2, b3]
show_book_list(book_list)

book_list_sort = sorted(book_list, key=lambda x:x.book_price, reverse=False)
show_book_list(book_list_sort)
"""
out:
	百年孤独                59        
	云边有个小卖部          49        
	高等数学                19.9      
	
	=====
	高等数学                19.9      
	云边有个小卖部          49        
	百年孤独                59        
	
	=====
"""

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值