python找出最大或者最小的N个元素

需求:在列表、集合等数据结构中找出最大或者最小的N个元素

  • 使用heapq模块中的 nlargest()nsmallest() 函数
import heapq

nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
n = 3
print('最大的%d个元素:' % n, heapq.nlargest(n, nums))
print('最小的%d个元素:' % n, heapq.nsmallest(n, nums))

# Out:
# 最大的{}个元素: [42, 37, 23]
# 最小的{}个元素: [-4, 1, 2]

还可处理列表嵌套字典的数据结构

  • 在此使用水果列表举例,假设我们有许多水果🍉🍎🍊🍐🍅🍌🍇,现在需要根据水果的价格进行选择
fruits = [
        {'name': 'apple', 'weight': 7, 'price': 13.1},
        {'name': 'orange', 'weight': 6, 'price': 7.5},
        {'name': 'watermelon', 'weight': 40, 'price': 20.3},
        {'name': 'pear', 'weight': 8, 'price': 6},
        {'name': 'strawberry', 'weight': 3, 'price': 30.5},
        {'name': 'banana', 'weight': 4, 'price': 3.7},
        {'name': 'tomato', 'weight': 5, 'price': 2.4},
        {'name': 'grape', 'weight': 1.5, 'price': 21}
        ]
n = 3
expensive = heapq.nlargest(n, fruits, key=lambda x: x['price'])
cheap = heapq.nsmallest(n, fruits, key=lambda x: x['price'])

print('最便宜的%d种水果:' % n, cheap)
print('最贵的%d种水果:' % n, expensive)

# Out:
# 最便宜的3种水果: [{'name': 'tomato', 'weight': 5, 'price': 2.4}, {'name': 'banana', 'weight': 4, 'price': 3.7}, {'name': 'pear', 'weight': 8, 'price': 6}]
# 最贵的3种水果: [{'name': 'strawberry', 'weight': 3, 'price': 30.5}, {'name': 'grape', 'weight': 1.5, 'price': 21}, {'name': 'watermelon', 'weight': 40, 'price': 20.3}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值