0
我的代碼基本上只是通過檢查DictReader的每一行(一個字典列表)並將重複項放入RejectedEvents列表中並返回結果,即一個去重複詞典的詞典。我還需要爲RejectedEvents的每一行添加一個原因,因爲稍後我會拒絕其他原因。代碼與問題一樣是非常明顯的,但不是解決方案;問題是標有#PROBLEM的行,並且當我取出更新語句時問題消失;與更新語句,空值分配,沒有它分配行,所以更新搞砸了。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,而不是一個字典...經過測試,第一個解決方案失敗時,我使用的字典(行).update(原因)....但拿出字典(),它的工作原理...謝謝。 – gunslingor
'dict'調用不起作用,因爲它更新了一個新的未引用dict而不是'row'。 –