2017-07-18 10 views
1

こんにちは私は倉庫にオペレータによる距離を計算しますアルゴリズムに苦しんでいます。ロケーションのセットを含むpicklistに基づいて計算されます。私はちょうどそれらの間の距離を設定します。私はいくつかの場所で手入力で "ミニ"アルゴリズムバージョンを作成しましたが、100kを超える場所でピックリストを目指しています。私はcsvファイルから変数 "picklist"と "LOCA" - "" locations "" "を入力したいと思います。csvファイルの入力、アルゴリズムの計算距離

はそう最初の列がある

['4403821', '10', 'E-11-GR', 'NSWH-828031C', '20-Jun-17'] 

['4403824', '10', 'I-15-BL', 'CISH-800-100174-01', '20-Jun-17'] 

['4403825', '10', 'I-02-ER', 'CISH-800-100175-01', '20-Jun-17'] 

['4403825', '20', 'G-21-FR', 'CISH-700-101709-01', '20-Jun-17'] 

(それのその部分だけが、uがアイデアを得る):

with open("movement warehouse.csv") as csv_file: 
    csv_reader = csv.reader(csv_file, delimiter=',') 
    next(csv_reader) 
    for row in csv_reader: 
     picklist, number, LOCA, ITEM, DATE = row 
     print(row) 

それは、この出力します。私はこのコードでそれを行うために管理していますピックリストの数と3番目のピックリストは場所です。 他の人は今は私のためには関係ありません。 だから、最終的には私の質問: はどのように私は例えばデータの特定の「セル」を使用することができます:私はチェックしたいと思います:

if first picklist = second picklist: #thats possible 
    distance += (distance between location'E-11-GR'and 'I-15-BL' 
else: 
    skip to next location #or whatever 

あなたがアイデアを得ますか? (csvファイルからの)列の行ごとにデータを移動する方法

PS: 今は3週間Pythonで作業しています。これは私の最初の投稿です。この記事は、私はあなたが配列インデックスにアクセスしたい

+0

[編集]あなたの質問とindex' 'によって、あなたは' distance'を計算する方法を示していますか? – stovfl

答えて

1

良く説明するために、病気試みをお知らせ乱雑することです。あなたが得る

すべての行を配列としてで来る:

my_row = ["1", "foo", "bar"] 

あなたが言って最初を取得することができます:

my_row[0] 

配列はゼロから始まるので、barmy_row[2]になります。

配列に含まれていない用語(my_row[5])を尋ねると、エラーが発生するので、要求する前にデータがあることを確認してください。

あなたのコードの構造は次のようになります:

all_rows = [] 
for row in csv_reader: 
    all_rows.append(row) 

'To get the first row: 
all_rows[0] 
'To get the first column of the first row: 
all_rows[0][0] 
+0

私は10000行を持っていると私は知っているが。印刷私はあなたがメモリのどこかにリストを格納する必要があると思う、それは最初の列から10000個の値を出力しますし、私は「プリント(A12)、」エクセル –

+0

のように、一種の私の編集 - を参照してくださいを指定できるようにしたい([0] my_row)あなたがそれをやることができるようになる前に。また、あなたが今読んでいるところでは、あなたが正しいです。列と行で終わることになります。行にアクセスする方法がないために悪いです。 – Ares

0

私は辞書でこれを解決するためのエレガントな方法があると思います。

ピックリストは、当社の基準点であると仮定すると(?)

master_dict = defaultdict(list) #sets up a dictionary with a list as the default value 
for row in csv: 
    value = dict(zip(['number', 'LOCA', 'ITEM', 'DATE'], row[1:])) 
    master_dict[row[0]].append(value) 

を次にあなたがキーを反復処理することができますか?