【发布时间】:2013-10-01 08:49:58
【问题描述】:
我有一个文件,其中包含我正在循环的值。该文件由具有 x 和 y 值的两列组成。我将 x 和 y 值添加到列表中,例如
example_list = []
for line in f:
example_list.append([line.split()[0], line.split()[1]])
但是,我希望列表最长为 15 个列表,仅保留来自 line.split()[1] 的最高值。两种方法是
example_list = []
for line in f:
example_list.append([line.split()[0], line.split()[1]])
top_15 = example_list.sort(key=operator.itemgetter(1), reverse=True)[:15]
或
example_list = []
count = 0
for line in f:
if count < 15:
example_list.append([line.split()[0], line.split()[1]])
count += 1
else:
example_list.sort(key=operator.itemgetter(1))
if example_list[0][1] < line.split()[1]:
example_list[0] = line.split()[1]
但是,我不想读取内存中的整个文件或为每一行调用sort。有什么更好的方法来保持列表的排序,以便只添加一个新元素来替换列表中的最低元素?
【问题讨论】:
标签: python list sorting python-2.7