如何使用不带Pandas的Python从CSV文件中获取10个最高值

问题描述 投票:1回答:1

我有一个CSV文件,我使用CSV库中的DictReader将此文件转换为字典。

我的代码是这样的:

with open('file.csv', 'r') as file:
        reader = csv.DictReader(file)
        highest = sorted(reader, key=lambda x: (x['value']))
        print(highest)

但这不起作用,列表highest拥有CSV的所有数据,我只想要10个最高值。但我不知道如何使用限制列表只使用字典接收10个最高值。

我不能用熊猫

python csv
1个回答
4
投票

您可以在排序后对列表进行切片以获得10个最高值:

highest = sorted(reader, key=lambda x: x['value'])[-10:]

您还可以使用heapq.nlargest方法在O(n log t)(其中t是要返回的项数)时间复杂度而不是O(n log n)中实现相同的效果:

import heapq
highest = heapq.nlargest(10, reader, key=lambda x: x['value'])
© www.soinside.com 2019 - 2024. All rights reserved.