2016-04-30 7 views
3

このリストのソートを開始して、変換率(テキストファイルからデータを読み込む)によって決定された国の名前が順番に表示されるようにしますか?初心者のタプルによる並べ替え

America,Dollar,1 
Argentina,Peso,8.257 
Australia,Dollar,1.432 
Austria,Euro,0.82 

私が開始する方法についての一般的な考えを持っているが、私はここから何をすべきかわかりません。これまで私がこれまで持っていたことは次のとおりです:

fhand = open('Exchange.txt') 
for line in fhand: 
    line = line.split(',') 
print line[0], line[2] 

編集:私はそれには為替レートではなく、国名のみを表示します。また、私は初心者ですので、より簡単な答えは、より多くの有用な私は理解することができます/学ぶ。出力のようなものでなければなりません:あなたは結果として多次元リストを気にしない場合は

Austria 
Australia 
America 
Argentina 
+1

は、データフレームの中にそれを読んで、その後、唯一の国ではなく、印刷していするための最良の方法だろうどのようなデータフレーム –

答えて

3

、ここでそれを行うには、比較的短い方法です。

EXCHANGE.TXT:

America,Dollar,1 
Argentina,Peso,8.257 
Australia,Dollar,1.432 
Austria,Euro,0.82 

コード:

with open('Exchange.txt') as f: 
    lines = [x.strip().split(",") for x in f.readlines()] 
    #reverse = True for descending sorted order 
    lines.sort(key=lambda x: float(x[-1]), reverse=True) 
    print(lines) 

結果:reverse=Trueなし

[['Argentina', 'Peso', '8.257'], ['Australia', 'Dollar', '1.432'], 
['America', 'Dollar', '1'], ['Austria', 'Euro', '0.82']] 

(昇順)

[['Austria', 'Euro', '0.82'], ['America', 'Dollar', '1'], 
['Australia', 'Dollar', '1.432'], ['Argentina', 'Peso', '8.257']] 
+0

を並べ替えます単位、および為替レート – Rob

2

まず、データを単一のタプルリスト(または任意のシーケンスですが、サイズを知っているのでタプルを使用する方がよい)に読み込みたいとします。私は、我々はそれを読み終わった後、自動的にファイルを閉じるにはwith open() as f構文を使用することに注意してください:

data = [] 
with open('Exchange.txt') as fhand: 
    for line in fhand: 
     data.append(line.split(',')) 

は今、私たちはbuilt-in sorting functionsを使用して、これをソートする:一緒に入れ、このすべてで

data.sort(key = lambda item: float(item[-1])) 

、およびmapを使用してわずかな簡素化:

with open('Exchange.txt') as fhand: 
    data = map(lambda line: line.split(','), fhand) 
data.sort(key = lambda item: float(item[-1])) 
1

あなたはパンダモジュールを使用することができれば、それはとても簡単かもしれません:

import pandas as pd 

fn = r'D:\temp\.data\36961029.csv' 
df = pd.read_csv(fn, header=None, names=['country','cur','rate']).sort_values(by='rate') 

# print sorted 
print(df) 

# save sorted DF to new CSV 
df.to_csv('sorted_data.csv', index=False) 

出力:

 country  cur rate 
3 Austria Euro 0.820 
0 America Dollar 1.000 
2 Australia Dollar 1.432 
1 Argentina Peso 8.257 

sorted_data.csv:

country,cur,rate 
Austria,Euro,0.82 
America,Dollar,1.0 
Australia,Dollar,1.432 
Argentina,Peso,8.257 
関連する問題