这两个函数分别有三个参数,分别为n, iterable, key
'''
Author:爱吃跳跳糖的小怪兽
time:2020-8-27
Version:1.0
'''
import heapq
List_Example1 = [-100, 2, 5, 7, -78, 85, 56, -21, 0] #假定一个无序的整数列表需要进行数据提取
print(heapq.nlargest(3,List_Example1))
print(heapq.nsmallest(3,List_Example1))
代码块
'''
Author:爱吃跳跳糖的小怪兽
time:2020-8-27
Version:1.0
'''
import heapq
achievements = [
{'name':'xu', 'data':98},
{'name':'yuan', 'data':95},
{'name':'qi', 'data':99},
{'name':'shuai', 'data':45},
{'name':'ge', 'data':70}
]
print(heapq.nsmallest(3,achievements))
print(heapq.nlargest(3,achievements))
报错截图:
错误分析:程序抛出了一个类型错误,表示不支持对两个字典进行比较。
解决方法:对key值进行设定,这里使用lamda匿名函数将data键对应的值传返回至key值中,比对各个字典中的data数据以进行排列。
'''
Author:爱吃跳跳糖的小怪兽
time:2020-8-27
Version:1.0
'''
import heapq
achievements = [
{'name':'xu', 'data':98},
{'name':'yuan', 'data':95},
{'name':'qi', 'data':99},
{'name':'shuai', 'data':45},
{'name':'ge', 'data':70}
]
print(heapq.nsmallest(3,achievements,key=lambda x:x['data']))
print(heapq.nlargest(3,achievements,key=lambda x:x['data']))
输出结果截图:
在使用heapq模块的nlargest()和nsmallest()函数进行数据查找时,需要先行判断数据类型,考虑是否设定key值,以确保函数的正常运行。