Python2.7CSV:如何基于值删除重复行

Python2.7CSV:如何基于值删除重复行,python,csv,Python,Csv,我有一个csv文件,格式如下: name, id, date, score chris, 55, 5/22/2014, 70 pete, 56, 5/22/2014, 100 chris, 55, 5/22/2014, 100 我尝试按名称排序,然后找到重复条目并删除分数最低的重复条目。我已经完成了分类,其余的我都被卡住了 排序代码: import csv sortedlist = None with open('my_file.csv', 'r') as zfile: sorte

我有一个csv文件,格式如下:

name, id, date, score
chris, 55, 5/22/2014, 70
pete, 56, 5/22/2014, 100
chris, 55, 5/22/2014, 100
我尝试按名称排序,然后找到重复条目并删除分数最低的重复条目。我已经完成了分类,其余的我都被卡住了

排序代码:

import csv

sortedlist = None

with open('my_file.csv', 'r') as zfile:
    sortedlist = sorted(zfile, key=operator.itemgetter(0), reverse=False)
    for line in sortedlist:
        line = line.rstrip()
        print line
以下是您想要的(使用功能样式):

输出:

$ python -i foo.py
{' 55': ['chris', ' 55', ' 5/22/2014', ' 100'],
 ' 56': ['pete', ' 56', ' 5/22/2014', ' 100']}
>>>
按名称对此输出进行排序很容易:

>>> pprint(sorted(unique_rows.values(), key=itemgetter(0)))
[['chris', ' 55', ' 5/22/2014', ' 100'], ['pete', ' 56', ' 5/22/2014', ' 100']]
注:

  • 使用模块读取数据,因为它是以逗号值分隔的(CSV)
  • 根据
    0th
    (名称)项和
    3rd
    (分数)项的键对行进行排序
  • 将排序顺序从最低分颠倒到最高分(您将看到原因)
  • 将此映射到最低到最高分数的dict(键/值对)
任何基于id的分数较高的重复条目都将取代分数较低的条目
这样您就得到了您想要的输出/结果。

预期的输出是什么?
>>> pprint(sorted(unique_rows.values(), key=itemgetter(0)))
[['chris', ' 55', ' 5/22/2014', ' 100'], ['pete', ' 56', ' 5/22/2014', ' 100']]