【发布时间】:2013-03-11 16:30:49
【问题描述】:
我正在尝试订购一个包含 300 多个条目的 .csv 文件,并将其全部按方言下一个特定列中的数值排序。 这是我到目前为止编写的代码,但它似乎只是在输入数据时输出数据
import csv
import itertools
from itertools import groupby as gb
reader = csv.DictReader(open('Full_List.csv', 'r'))
groups = gb(reader, lambda d: d['red label'])
result = [max(g, key=lambda d: d['red label']) for k, g in groups]
writer = csv.DictWriter(open('output.csv', 'w'), reader.fieldnames)
writer.writeheader()
writer.writerows(result)
整个文件中只有 50 行包含方言“红色标签”下的值,其他所有行都留空。 它在 .csv 的 Z 列中(但不是最后一个),所以我假设该列的索引是 25(0 是第一个)。 任何帮助将不胜感激。
【问题讨论】:
-
groupby不是用于排序,而是用于对可迭代对象进行分块。来自itertools.groupby的文档:“通常,迭代需要已经在相同的键函数上排序。”