2016-06-29 7 views
1

私は摂氏の温度でCSVファイルを持っています。CSVファイルと与え辞書特定のキーは

17;15;13;13;12;13;14;15;15;16;17;18;19;21;23;25;25;23;22;22;21;19;18;18 

各数値は一日のXの時間での温度で、csvファイルを命じます。.. 今、私はこのように、各エントリにキーを与えたい:

{0: 17, 1: 15, 2:13, 3: 13, 4: 12, ... 23: 18} 

はい、このようなイムは、AM/PMの時刻形式を使用して、私はcsvファイルを読み、辞書のリストとしてそれを返す方法を知って、私の問題は、それを特定のキーを与える方法ではありません。

def read_temp(file_csv): 
    import csv 
    with open('file_csv', 'rU') as file_csv: 
     reader = csv.DictReader(file_csv) 
     result = [] 
     for d in reader: 
       result.append(d) 
    return result 

私はフィールド名= [ '0'、 '1'、 '2'、「3、 '4'、 '5'、... '23']でそれを行うことができますが、それは本当にありません最良の方法は、

誰かがより良い方法を知っています...私は100個のキーのためにそれをしなければならない想像?タイは事前に。

+0

温度を注文された場合と、与えられるべきキーは0,1,2,3です...なぜそれらをリストに入れませんか? – SilentMonk

答えて

2

これを試してみてください、あなたが与えた例のように、数字キーを使用するには:

result = {} # a dictionary, not a list 
for idx, d in enumerate(reader): 
    result[idx] = d 

enumerate機能は、各データ項目dと一緒に0から始まるあなたのidxを与えるだろう。

しかし、私は@SilentMonkが正しいと思う - あなたが持っている既存のコードは、あなたがresult[0]うまくにアクセスすることができます。

私はもう一度DictReaderを見ました。これを試してみてください:

残りのコードはそのままです。それはあなたに期待するものを与えるはずです。 range(24)はリスト[0,1、...、23]を生成する。 24のファイルの各行の値が0から23

+0

それはうまく動作し、デリミタ= ';'が見つかりませんでしたcsv.DictReaderにあります。 – EXT

+0

@EXTそれを聞いてうれしい! :) – cxw

+0

がところで値が文字列であるが、どのように私は彼らがint型に変更できますか? result.append '前 – EXT

0

に各キー与えられます1つの可能な方法はrange(24)などでそれらを単に圧縮するです:

>>> temps = "17;15;13;13;12;13;14;15;15;16;17;18;19;21;23;25;25;23;22;22;21;19;18;18".split(";") 
>>> temps 
['17', '15', '13', '13', '12', '13', '14', '15', '15', '16', '17', '18', '19', '21', '23', '25', '25', '23', '22', '22', '21', '19', '18', '18'] 
>>> zip(range(24),temps) 
[(0, '17'), (1, '15'), (2, '13'), (3, '13'), (4, '12'), (5, '13'), (6, '14'), (7, '15'), (8, '15'), (9, '16'), (10, '17'), (11, '18'), (12, '19'), (13, '21'), (14, '23'), (15, '25'), (16, '25'), (17, '23'), (18, '22'), (19, '22'), (20, '21'), (21, '19'), (22, '18'), (23, '18')] 
>>> dict(zip(range(24),temps)) 
{0: '17', 1: '15', 2: '13', 3: '13', 4: '12', 5: '13', 6: '14', 7: '15', 8: '15', 9: '16', 10: '17', 11: '18', 12: '19', 13: '21', 14: '23', 15: '25', 16: '25', 17: '23', 18: '22', 19: '22', 20: '21', 21: '19', 22: '18', 23: '18'} 
>>> 
関連する問題