2017-03-19 13 views
-1

私はcsvファイルを読んでいます。私はキーが株式ティッカーであり、その値がそのティッカーの終値のリストであるリストを作成しなければなりません。私は各株の最高値と最低価格でテロップを並べ替えるのに問題があります。リストの辞書を作成するPython 3

意図した出力は次のようになります。

>GOOG: 180.38 difference (672.93-492.55) 
>LNKD: 100.82 difference (270.76-169.94) 
>AAPL: 36.74 difference (133.0-96.26) 
>FB: 25.76 difference (98.39-72.63) 
>MSFT: 9.32 difference (49.61-40.29) 

マイサンプルCSVテーブルファイル:意図した動作を生産されていない

>Ticker Date  Open  High  Low  Close  Volume 
>GOOG 25-Sep-15 629.77 629.77 611  611.97 2174009 
>GOOG 24-Sep-15 616.64 627.32 612.4 625.8  2240098 

私のコード。おかげで、フィードバックのため@zyxue

file_data = open('../python_data/stock_prices.csv').readlines()[1:] 
stock_dict = {} 

def price_diff(key): 
    change_price = max(stock_dict[key]) - min(stock_dict[key]) 
    return (change_price) 


for line in file_data: 
    line = line.split(',') 
    ticker = line[0] 
    if ticker not in stock_dict: 
     stock_dict[ticker] = [] 
    stock_dict[ticker].append(float(line[5])) 

sorted_keys = sorted(stock_dict, key=price_diff, reverse=True) 
#print(sorted_keys) 

for key in stock_dict: 
    print(key, round(max(stock_dict[key]) - min(stock_dict[key]),2)) 
+0

パンダ、http://pandas.pydata.org/をご存知ですか?エクササイズとしてやっていない限り、自分でcsvをパースするのではなく、パンダを使うことを検討してください。 – zyxue

+0

こんにちは。私は運動としてやっています。 –

+0

'sorted(stock_dict)'ではなく、 'sorted(stock_dict.items())'の代わりに辞書をソートする必要はありません。 – zyxue

答えて

0
sorted_items = sorted(stock_dict.items(), key=lambda (k, v): max(v) - min(v), reverse=True) 
0

:私は辞書のキーをループして最大 - 最小値によってそれらをソートするに取り組んでいます。多くの研究の後、私はこの結論に達し、意図された成果を得ています。

file_data = open('../python_data/stock_prices.csv').readlines()[1:] 
stock_dict = {} 

def price_diff(key): 
    change_price = max(stock_dict[key]) - min(stock_dict[key]) 
    return (change_price) 

for line in file_data: 
    line = line.split(',') 
    ticker = line[0] 
    if ticker not in stock_dict: 
     stock_dict[ticker] = [] 
    stock_dict[ticker].append(float(line[5])) 

sorted_keys = sorted(stock_dict, key=price_diff, reverse=True) 
for key in sorted_keys: 
    min_val = min(stock_dict[key]) 
    max_val = max(stock_dict[key]) 
    change_val = round(max(stock_dict[key]) - min(stock_dict[key]),2) 
    print("{}: {} difference ({} - {})".format (key, change_val, max_val, min_val)) 
関連する問題