我有一个小问题。我正在尝试创建一个使用大型(〜2gb)csv文件(id,integer,integer)的脚本,按第一个整数对它们进行排序,然后将前x行(由用户定义)写入新文件)。
我能够使sort函数按要求工作,并且提取顶部的X行也可以,但是我无法弄清楚如何获取此输出以写入csv。为了检查它是否正常工作,我提供了打印功能,并且一切正常。
我觉得我在csv模块中缺少一个非常基本的概念,但是我无法弄清楚它是什么!
import csv
import operator
def csv_to_list(csv_file, delimiter=','):
with open(csv_file, 'r') as csv_con:
reader = csv.reader(csv_con, delimiter=delimiter)
return list(reader)
def sort_by_column(csv_cont, col, reverse=True):
header = csv_cont[1]
body = csv_cont[1:]
if isinstance(col, str):
col_index = header.index(col)
else:
col_index = col
body = sorted(body,
key=operator.itemgetter(col_index),
reverse=reverse)
#body.insert(0, header)
return body
def print_csv(csv_content):
for row in csv_content:
row = [str(e) for e in row]
print('\t'.join(row))
def write_csv(dest, csv_cont):
with open(dest, 'w') as out_file:
writer = csv.writer(out_file, delimiter=',')
for row in csv_cont: …Run Code Online (Sandbox Code Playgroud) 我有一个整数列表,我想找到列表中的最高值(最大值和最接近值)及其相应的索引值。
我有一个方法,但我觉得太复杂了!
lst = [10,6,17,99,3,1,-3,47, 99]
max_value = (max(lst))
largest = 0.0
largest_index = 0
second_largest = 0.0
second_largest_index = 0
third_largest = 0
third_largest_index = 0
for (index,value) in enumerate (lst):
if value == largest_value:
if largest == 0.0:
largest = value
largest_index = index
elif largest != 0.0 and value > second_largest:
second_largest = value
second_largest_index= index
elif second_largest != 0.0 and value > third_largest:
third_largest = value
third_largest_index = index
elif third_largest != 0.0 and value > …Run Code Online (Sandbox Code Playgroud)