我有一個很長的文件(大約2 * 10^5行乘5列)填充數字(浮點數)。python:findimg文件的第一列的最大數量,並考慮不同列中同一行上的其他數字
我必須找到第一列數字中的最大值,然後考慮同一行上其他四列上的相應數字。
我想我可能會使用使用字典:鍵是第一列中的數字,值是包含其他列表中的數字。我在鍵中找到最大值並讀取相應的值。
有沒有更聰明的方法?該字典將是非常大的...
我,差點忘了:我使用python 2.6。
我有一個很長的文件(大約2 * 10^5行乘5列)填充數字(浮點數)。python:findimg文件的第一列的最大數量,並考慮不同列中同一行上的其他數字
我必須找到第一列數字中的最大值,然後考慮同一行上其他四列上的相應數字。
我想我可能會使用使用字典:鍵是第一列中的數字,值是包含其他列表中的數字。我在鍵中找到最大值並讀取相應的值。
有沒有更聰明的方法?該字典將是非常大的...
我,差點忘了:我使用python 2.6。
# define a sorting function based on the first numer, assuimg columns are
# separated by space or tab
f = lambda line: float(line.split()[0])
# opened file in Python is an iterator, so could be served to max() directly
with open('your_input_file') as inf:
line_with_max_num = max(inf, key=f)
# turn the other four numbers into a list and print them to the screen
# or do whatever you like with them
print [float(_) for _ in line_with_max_num.split()[1:]]
maxn=-float('inf')
with open(fname) as f:
for line in f:
if maxn<int(line.split(',')[0]):
theLine=line
#do something with that line:
print theLine
INPUT = "myfile.txt"
DELIM = ","
def first_float(s):
first = s.split(DELIM, 1)[0]
return float(first)
with open(INPUT) as inf:
max_line = max(inf, key=first_float)
max_data = [float(f) for f in max_line.split(DELIM)]
多少次,你需要重複此爲每個輸入文件?如果一次,爲什麼不掃描文件,保留最佳行? –
我只能重複一次。 – mattiav27
這聽起來像我碰到一個csv文件的情況http://stackoverflow.com/questions/21731270/opening-a-large-json-file-in-python-with-no-newlines-for-csv-然後我使用convert-python-2開發完整的numpy統計信息。如果您只需將該行標識爲讀取並可丟棄其餘數據,則只需要一次運行。 – sabbahillel