:
>>> print txt
1,"Goroka",10,"Pacific"
2,"Madang",20,"Pacific"
3,"Mount Hagen",5,"Pacific"
をあなたは、最大または最小値を持つ行を見つけるために、ラムダキー機能をmax
またはmin
を使用することができます第三CSVフィールド:
>>> max(txt.splitlines(), key=lambda line:int(line.split(',')[2]))
'2,"Madang",20,"Pacific"'
あるいは、分:
>>> min(txt.splitlines(), key=lambda line:int(line.split(',')[2]))
'3,"Mount Hagen",5,"Pacific"'
次に、3番目の値を探している場合は、その行を解析します。
まったく同じアプローチを使用して、最大n値または最小のnの値を取得するためにそのようなデータを並べ替えることができます:ライン・バイの一般的なイディオムを使用し、データがファイル内にある場合
>>> print '\n'.join(sorted(txt.splitlines(), key=lambda line:int(line.split(',')[2])))
3,"Mount Hagen",5,"Pacific"
1,"Goroka",10,"Pacific"
2,"Madang",20,"Pacific"
を同じアプローチを用いて解析-line:一般に
with open(your_file) as f:
max(f, key=lambda line:int(line.split(',')[2]))
、ファイルのようなデータのためcsv moduleを使用する方がよいです。 for
ループを使用してファイルの内容を取得する場合は、file.readlines()
を使用しないでファイルを反復するのを避ける方がよい場合もあります。
あなたは行ごとにそれを読んでいるので、 'no'と現在の最大値を比較することで、ループ内の最大値を簡単に見つけることができます – martianwars
あなたのデータはファイルか複数行ですか?最大値のみを探しているのですか、このデータを何らかの方法で扱っていますか? – dawg