python - 如何在没有 Pandas 的情况下使用 Python 从 CSV 文件中获取 10 个最高值

标签 python csv

我有一个 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 个最高值。

我不会使用 Pandas

最佳答案

您可以在排序后对列表进行切片以获得最高的 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'])

关于python - 如何在没有 Pandas 的情况下使用 Python 从 CSV 文件中获取 10 个最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093443/

相关文章:

python - 在 plotly 中绘制分组的 pandas 数据

postgresql - 如何将 PostgreSQL 查询输出导出到 csv 文件

r - 尝试设置 "sep"/"dec"忽略 : Error in write. csv 格式 - R

python - 应用程序未在 macOS Big Sur 11.0.1 上弹出

python - 如何从字节播放 mp3?

python - 如何使 mplcursors 模块仅显示折线图上绘制的点的标签

python - Scikits-learn svm SVC 简单问题

csv - 将 XML 序列化为文本 (csv) 时如何防止出现额外空格

mysql - 如何在从 mysql 数据库中的本地 csv 加载时转义引号

python - 更改 csv.DictReader 类型中字典键的值