-3

所以,我有这样的文件:

Mark Brown
12 2345
45 6780


63 3210
Peter Tailor

10 15430
114 1230
23 3450



John Smith
234 12130
11 32410

名称很明显,在名称下方有 X 行,每行带有 ID 和 VALUE(也有空行)。我需要将每个名称和最大 VALUE 的 ID 写入文件,如下所示:

Mark Brown 45
Peter Tailor 10
John Smith 11

如果只有一个名字,我可以简单地做,但是里面有 X 个名字,我不知道:( 有什么想法或帮助吗?

4

2 回答 2

0

我认为首先您阅读每一行并检查它是否以字母或数字开头(也就是如果 ist 是名称或 ID)*,然后您为每个名称创建一个元素,其中包含一个包含所有 ID 的列表。您使用排序算法对它们进行排序,然后,您只需写出所有内容(应该没问题)

*您还必须检查空行

于 2013-04-07T20:28:23.300 回答
0

有一些空闲时间,所以这里是创建字典的代码。我会让你作为一个练习来理解每一行:)

from itertools import groupby
with open('testing.txt') as file:
    goodlines = [line.strip() for line in file if line.strip()]
    splitted = list( list(val[1]) for val in groupby(goodlines, lambda l: l[0].isdigit()))
    names = [ list(val)[0] for val in splitted[::2] ]
    val_split = [ [v.split() for v in val] for val in splitted[1::2] ]
    val_sorted = [ sorted(val, key=lambda v:int(v[1]))[-1][0] for val in val_split]
    result = dict(zip(names, val_sorted))
print result
于 2013-04-07T21:57:42.613 回答