如何使用标准库从字典中提取两个最昂贵的项目



我想写一个函数,返回一个包含最昂贵项的字典。它将第一个参数作为要提取的项目数,将第二个参数作为整个数据集。若我为第二昂贵的物品添加更多的物品,它只会得到第一个物品的重复值。

top = 3
data = [{"name": "bread", "price": 100},
{"name": "wine", "price": 138},
{"name": "meat", "price": 15},
{"name": "water", "price": 1},
{"name": "fish", "price": 10}]
most_expensive(top: int, data: list) -> list
mostExpensive = dict(data[0])
for i in data:
if i["price"] > mostExpensive["price"]:
mostExpensive.update(i)

您可以根据反转的价格对字典的list进行排序,然后使用切片表示法返回top结果。

from operator import itemgetter
top = 3
data = [{"name": "bread", "price": 100},
{"name": "wine", "price": 138},
{"name": "meat", "price": 15},
{"name": "water", "price": 1},
{"name": "fish", "price": 10}]
print(sorted(data, key=itemgetter('price'), reverse=True)[:top])

输出:

[{'name': 'wine', 'price': 138}, 
{'name': 'bread', 'price': 100}, 
{'name': 'meat', 'price': 15}]

最新更新