0
私のコードは基本的にはDictReader(dictsのリスト)の各行をチェックし、dictsのRejectedEventsリストに入れて結果を返します。 dictsのdeduplicated dictです。私は後でRejectedEventsの各行に理由を追加する必要があります。なぜなら、後で他の理由でも却下するからです。このコードは、問題のようにかなり自明ですが、解決策ではありません。問題は#PROBLEMとマークされた行であり、更新ステートメントを取り出すと問題は消えます。更新ステートメントでは、nullが割り当てられ、行が割り当てられていないと、更新がそれを混乱させます。Python:DictReader行を辞書として追加する方法
def GetScrubbedEventData(MetricID, EventsRaw, RejectEvents):
start = time.time()
pass_count = 0
fail_count = 0
result = {}
for row in csv.DictReader(EventsRaw, delimiter=","):
try:
#check duplicate
result[row['AssetID']]
Reason = {"RejectedFor": "Duplicate AssetID in same file."}
RejectEvents.append(dict(row).update(Reason)) #PROBLEM
fail_count += 1
except KeyError:
row['EventStart'] = scrub.Date(row['EventStart'])
row['EventEnd'] = scrub.Date(row['EventEnd'])
result[row['AssetID']] = row
pass_count += 1
うわー、おかげで...私はそれを試してみました宣誓、私はから行を更新しましたので、それが失敗したと思ったかもしれませんDictReadではなくdict ...テスト後、最初の解決策は、dict(行).update(Reason)を使用していたときに失敗します...しかし、dict()を取り出すと動作します...ありがとう。 – gunslingor
'dict'呼び出しは、' row'の代わりに新しい参照されていないdictを更新するので動作しません。 –