私はcsvファイルを前処理しており、フィールドでフィルタリングされたcsvファイルデータで構成される3つの辞書を出力します。Python関数は一度だけ実行されます
セットアップである:
import csv
from m_functions import region_goals
csvFile = # a file path
mnDict = dict()
nlDict = dict()
neDict = dict()
# READ CSV
weekList = csv.reader(open(csvFile))
# CREATE DICTIONARY FOR THIS WEEK AND REGION
region_goals(weekList, "STR1", neDict)
region_goals(weekList, "STR2", mnDict)
region_goals(weekList, "STR3", nlDict)
region_goals関数である:
def region_goals(csv, region, region_dictionary):
firstline = True
for row in csv:
if firstline:
firstline = False
continue
if row[14] == region:
if row[16] not in region_dictionary:
region_dictionary[row[16]] = float(row[6])
else:
region_dictionary[row[16]] += float(row[6])
else:
continue
return region_dictionary
機能の最初の使用のために予想されるように出力が常にあります。 2回目の2回は関数を使用し、空の辞書が返されます。
私はこれが私には何か小さいものが欠けていると確信していますが、私はPythonには新しく、これをしばらく修正しようとしています。あなたの応答に事前に感謝します。
最初の呼び出しですでにファイルを繰り返しているので、後続の呼び出しには何も読み込むことができません。 'weekList = csv.reader(open(csvFile))'への呼び出しを関数に移す(ファイルを再オープンする)か、csv.readerクラスがサポートしている場合は 'weekList.seek(0)'を試すことができますそれ。 –
関数が3つのディクショナリを返す場合は、3回実行されます。 –
ニースはArnabを試してみますが、上記を見れば、セットアップ中に3つの空の辞書が作成されます。 –